Nginx服务器命名优先级

时间:2016-04-28 07:34:47

标签: nginx server-name

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

第一个:

server {
  server_name _;
  ...   
}

第二个:

server {
  server_name ~someRegex;
  ...
}

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

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

  
      
  1. 确切名称
  2.   
  3. 以星号开头的最长通配符名称,例如“* .example.org”
  4.   
  5. 以星号结尾的最长通配符名称,例如“邮件。*”
  6.   
  7. 首先匹配正则表达式(按照配置文件中的出现顺序)
  8.   

据我所知,server_name _被用作全能服务器。

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

1 个答案:

答案 0 :(得分:2)

不完全。

_只是呈现server_name无效。请参阅this document

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

因此,假设您的正则表达式有效并且nginx确实安装了第二个服务器块,那么您的配置将按预期工作。重新加载nginx后检查错误日志和/或使用

测试配置
nginx -t