Nginx 服务器名称优先级
Nginx server names priority
我在不同文件中有两个用于 nginx 的服务器部分。
第一个:
server {
server_name _;
...
}
第二个:
server {
server_name ~someRegex;
...
}
我有一些限制 - 我无法更改第一个服务器部分(即我无法编辑第一个文件)
文档说明了服务器名称优先级的以下内容:
- exact name
- longest wildcard name starting with an asterisk, e.g. “*.example.org”
- longest wildcard name ending with an asterisk, e.g. “mail.*”
- first matching regular expression (in order of appearance in a configuration file)
据我所知,server_name _
用作万能服务器。
所以当我有来自主机的请求匹配时,一些 Regex 请求由第一个服务器部分处理。有没有办法通过第二个服务器部分处理这些请求?
不完全是。
_
只会使 server_name
无效。参见 this document。
使 server
块成为默认块的原因是首先为给定端口定义或使用 listen ... default_server
修饰符定义。参见 this document。
因此,假设您的正则表达式有效并且第二个服务器块确实已由 nginx
安装,那么您的配置将按预期工作。重新加载后检查错误日志 nginx
and/or 使用
测试配置
nginx -t
我在不同文件中有两个用于 nginx 的服务器部分。
第一个:
server {
server_name _;
...
}
第二个:
server {
server_name ~someRegex;
...
}
我有一些限制 - 我无法更改第一个服务器部分(即我无法编辑第一个文件)
文档说明了服务器名称优先级的以下内容:
- exact name
- longest wildcard name starting with an asterisk, e.g. “*.example.org”
- longest wildcard name ending with an asterisk, e.g. “mail.*”
- first matching regular expression (in order of appearance in a configuration file)
据我所知,server_name _
用作万能服务器。
所以当我有来自主机的请求匹配时,一些 Regex 请求由第一个服务器部分处理。有没有办法通过第二个服务器部分处理这些请求?
不完全是。
_
只会使 server_name
无效。参见 this document。
使 server
块成为默认块的原因是首先为给定端口定义或使用 listen ... default_server
修饰符定义。参见 this document。
因此,假设您的正则表达式有效并且第二个服务器块确实已由 nginx
安装,那么您的配置将按预期工作。重新加载后检查错误日志 nginx
and/or 使用
nginx -t