Nginx的 – 根据server_name更改根目录?

我试图通过不为每个我testing的新站点创build一个新的nginx服务器configuration来节省一些时间在我的开发机器上。 我想知道是否有一种方法让nginx根据我加载的域来更改根目录。

所以,如果我有

mysite.loc myothersite.loc something.loc 

Nginx会看里面

 www/mysite.loc www/myothersite.loc www/something.loc 

这将允许我在模拟域上testing新事物的速度稍微快一点,因为我不必为每个域configuration新的/ etc / nginx / sites-availableconfiguration。

 server { listen 80; server_name *.loc; root /www/$host; index index.html; } 

这可能吗? 还有另一种方法吗?

你也可以做

  server_name _; root /opt/railo/tomcat/webapps/$host; 

不知道这是一个好主意,但我已经testing了它,它的工作原理。

nginxconfiguration有一些可以帮助你的东西:

 server { server_name ~^(www\.)?(?<domain>.+)$; root /sites/$domain; } 

我认为这正是你想要的吗? search命名捕获来获得这部分的文档,但我强烈build议您阅读server_name所有描述。

由于root指令在if条件中是不允许的。 如果您的判断复杂,请参考此解决scheme。

 set $PROJECT "release"; if ($host ~ "beta.my.site") { set $PROJECT "beta"; } root /home/northtree/$PROJECT/;