Nginx server块匹配顺序
在 Nginx 中,server_name
的匹配顺序遵循以下规则:
- 精确匹配:如果请求的主机名与某个
server
块的server_name
完全匹配,则使用该server
块处理请求。 - 通配符前缀匹配:如果请求的主机名与某个
server
块的server_name
以通配符(*.
)开头的部分匹配,则使用该server
块处理请求。通配符匹配可以用于处理子域名的请求。 - 长度最长匹配:如果有多个
server
块的server_name
部分匹配请求的主机名,则使用最长匹配的server
块处理请求。这意味着 Nginx 会选择最能精确匹配请求主机名的server
块。 - 默认服务器:如果以上规则都不匹配,则使用配置文件中定义的第一个
server
块作为默认服务器块来处理请求。
1 | server { |
假设 DNS 域名解析配置可访问域名有 liuzx.com.cn , test.liuzx.com.cn , frp.liuzx.com.cn 。
在上述示例中:
如果请求的主机名是
liuzx.com.cn
,将使用第一个server
块处理请求。如果请求的主机名是
test.liuzx.com.cn
,将使用第二个server
块处理请求。如果请求的主机名是
frp.liuzx.com.cn
,将使用第三个server
块处理请求。去掉第三个 server 块,如果请求的主机名是
frp.liuzx.com.cn
,将使用最后一个server
块作为默认服务器块处理请求。为什么不是第一个 server 块作为默认,因为下划线在 server_name 中表示默认服务。
去掉第三和第四个 server 块,如果请求的主机名是
frp.liuzx.com.cn
,将使用第一个server
块作为默认服务器块来处理请求。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CodeJourney!