Nginx-根据 server_name 更改根目录?

Nginx-根据 server_name 更改根目录?

我试图通过不为我测试的每个新站点创建新的 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/;

相关内容