3

我在不同的文件中有两个用于 nginx 的服务器部分。

第一个:

server {
  server_name _;
  ...   
}

第二个:

server {
  server_name ~someRegex;
  ...
}

我有一些限制 - 我无法更改第一个服务器部分(即我无法编辑第一个文件)

文档说明了有关服务器名称优先级的以下内容:

  1. 确切名称
  2. 以星号开头的最长通配符名称,例如“*.example.org”</li>
  3. 以星号结尾的最长通配符名称,例如“mail.*”</li>
  4. 第一个匹配的正则表达式(在配置文件中的出现顺序)

据我了解server_name _,它被用作包罗万象的服务器。

因此,当我有来自主机匹配的请求时,someRegex 请求由第一个服务器部分处理。有没有办法通过第二个服务器部分处理这些请求?

4

1 回答 1

3

不完全的。

_只是使server_name无效。请参阅此文档

使server块成为默认值的原因是首先为给定端口定义或使用listen ... default_server修饰符定义。请参阅此文档

因此,假设您的正则表达式有效并且第二个服务器块确实已由nginx. nginx重新加载和/或使用测试配置后检查错误日志

nginx -t
于 2016-04-28T09:07:33.430 回答