![Nginx 子域名重写至服务器目录](https://linux22.com/image/685598/Nginx%20%E5%AD%90%E5%9F%9F%E5%90%8D%E9%87%8D%E5%86%99%E8%87%B3%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9B%AE%E5%BD%95.png)
我们正在将一些 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;
}