假设一个请求匹配多个 nginx 服务器块https://www.example.com/bar
:
server {
listen 443;
server_name www.example.com;
location /foo { }
}
server {
listen 443;
server_name www.example.com;
location /bar { }
}
因此/bar
匹配第一个服务器块(即使没有default_server
,因为它列在最前面)。但它不会匹配位置。
我可以强制它以某种方式“落入”下一个匹配的服务器块吗?做有匹配的位置吗?
我读过请求处理文档,但我不明白在这种情况下会发生什么。
答案1
Nginx 根据listen
和server_name
指令选择服务器块。选择服务器块后,它将不会更改它。
有官方文档https://nginx.org/en/docs/http/server_names.html但我建议你读一下这篇文章https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms