如何正确设置 Nginx 模式匹配?

如何正确设置 Nginx 模式匹配?

我在端口 8002 上运行一个测试服务器,在端口 8001 上运行一个生产服务器

我希望测试版服务器提供 beta.xxx.com、fr.beta.xxx.com、en.beta.xxx.com 等网址,而生产服务器则提供 xxx.com、fr.xxx.com、en.xxx.com 等网址

这是我的 nginx 配置:

server {
  listen       80;
  server_name  ~.* beta.xxx.com$;
  access_log   logs/xxx_beta.access.log  main;
  root         html;

  location / {
    proxy_pass   http://127.0.0.1:8002;
  }
}


server {
  listen       80;
  server_name  ~.* xxx.com$;
  access_log   logs/xxx.access.log  main;
  root         html;

  location / {
    proxy_pass   http://127.0.0.1:8001;
  }
}

然而,所有流量都流向测试服务器。

我尝试了各种模式:^-.*代替~,以 结尾$或不,... 都不起作用。我没有忘记service nginx reload在配置更改之间。任何帮助都值得赞赏!

答案1

这里不需要领先的正则表达式——服务器模式匹配通常不使用它。我会运行:

# qa
server {
   server_name .beta.example.com;
}

# prod
server {
   server_name .example.com;
}

这样一来,在 beta.example.com 中寻找的所有内容都会进入 QA 网站,而其他任何内容都会进入主网站。

相关内容