假设一个请求匹配了多个 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
,因为它首先列出)。但它不会匹配一个位置。
我可以强制它以某种方式“通过”到下一个匹配的服务器块,它有一个匹配的位置吗?
我阅读了请求处理文档,但我不明白在这种情况下会发生什么。
Nginx 根据
listen
和server_name
指令选择服务器块。选择服务器块后,它不会改变它。有官方文档https://nginx.org/en/docs/http/server_names.html,但我建议阅读这篇文章https://www.digitalocean.com/community/tutorials/understanding-nginx-server -和位置块选择算法