Nginx的子域名和重写规则

我一直在试图configurationNginx来完成我目前在Apache中设置的function,但目前为止还没有成功。

我想要http://$1.$2.mas.example.com(其中$ 1和$ 2是任何子域名)指向根目录,其值为/ home / webcontent / $ 1 / mas / $ 2 / html

任何build议如何实现这一目标?

这是一个简单的方法来做到这一点..不是如何布置,而是使用整个主机名作为目录..我会深入探讨,如果nginx可以做你想做的。 我知道它可以做到这一点

server { listen 80; server_name _; location / { root /tmp/$host; index index.html index.htm; } } 

如果您在/tmp/host1.domain.com/index.html中点击http://host1.domain.com ,则会提供内容

编辑

这是你想要做的

 server { listen 80; server_name _; if ($host ~ (.*)\.(.*)\.domain.com) { set $myroot /tmp/$1/mas/$2; } location / { root $myroot; index index.html index.htm; } } 

由于nginx 0.7.40,你可以使用正则expression式服务器名称。

所以下面可能会工作(未经testing):

 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