Nginx 子域名重写至服务器目录

Nginx 子域名重写至服务器目录

我们正在将一些 Nginx 服务器从 Apache 迁移到 Nginx。虽然我们已经将 Nginx 用于各种网站,但它的配置大多是基础配置。但是,我们托管的其中一个“网站”(实际上是多个)是沙盒类型的网站,这样我们的开发人员就可以登录到服务器,创建一个目录,然后就可以启动并运行网站。我正在尝试弄清楚如何使用 Nginx 复制此操作,但目前还无法理解。任何帮助都将不胜感激。

服务器目录设置示例:

/home/[USER]/sandbox/site1
/home/[USER]/sandbox/site2
... etc.

Apache 配置:

<VirtualHost *:80>   
    ServerName example.com
    ServerAlias *.example.com    
    ServerAlias *.*.example.com    

    RewriteEngine   on

    RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.example\.com$ [NC]
    RewriteRule ^(.*)$ /home/%1/sandbox/%2/$1 [L]

    <Directory />
        AllowOverride All 
        Require all granted
    </Directory>
</VirtualHost>

生成的域:

[USER].site1.example.com
[USER].site2.example.com
.... etc.

在 Nginx 中,解析主机并正确地内部路由到所述目录的等效操作是什么?

答案1

也许是这样的:

server {
    server_name ~^(?<user>\w+)\.(?<site>\w+)\.example\.com$;

    #Then you can use $user and $site variables in config, e.g.:
    root /home/$user/sandbox/$site;
}

相关内容