我试图通过不为我测试的每个新站点创建新的 nginx 服务器配置来节省开发机器上的时间。我想知道是否有办法让 nginx 根据我正在加载的域更改根目录。
所以如果我有
mysite.loc
myothersite.loc
something.loc
Nginx 将查看内部
www/mysite.loc
www/myothersite.loc
www/something.loc
这将允许我在模拟域上更快地测试新事物,因为我不必为每个模拟域设置新的 /etc/nginx/sites-available 配置。
server {
listen 80;
server_name *.loc;
root /www/$host;
index index.html;
}
这可能吗?还有其他方法吗?
答案1
你也可以做
server_name _;
root /opt/railo/tomcat/webapps/$host;
不确定这是否是一个好主意但我已经测试过并且它有效。
答案2
这nginx 配置有些东西可以帮到你:
server {
server_name ~^(www\.)?(?<domain>.+)$;
root /sites/$domain;
}
我认为这正是你想要的,对吧?搜索命名捕获来获取文档的这一部分,但我建议您阅读所有描述server_name
。
答案3
作为根if 条件中不允许使用指令。如果有复杂的判断,请参考此解决方案。
set $PROJECT "release"; if ($host ~ "beta.my.site") { set $PROJECT "beta"; } root /home/northtree/$PROJECT/;