我一直在尝试配置 Nginx 来执行我目前在 Apache 中设置的操作,但到目前为止还没有成功。
我希望 http://$1.$2.mas.example.com(其中 $1 和 $2 是任意子域)指向根目录,其值为 /home/webcontent/$1/mas/$2/html
关于如何实现这一点有什么建议吗?
答案1
这是一个简单的方法。不是你如何布局,而是使用整个主机名作为目录。我会深入研究 nginx 是否可以满足你的要求。我知道它可以做到这一点
server {
listen 80;
server_name _;
location / {
root /tmp/$host;
index index.html index.htm;
}
}
如果你点击http://host1.domain.com在 /tmp/host1.domain.com/index.html
编辑
以下是您要执行的操作
server {
listen 80;
server_name _;
if ($host ~ (.*)\.(.*)\.domain.com) {
set $myroot /tmp/$1/mas/$2;
}
location / {
root $myroot;
index index.html index.htm;
}
}
答案2
从 nginx 0.7.40 开始,您可以使用正则表达式服务器名称。
因此以下方法可能有效(未经测试):
server {
listen 80;
server_name ~^(\w+)\.(\w+)\.mas\.example\.com$
root /home/webcontent/$1/mas/$2/html
}
看http://nginx.org/en/docs/http/server_names.html#regex_names