匹配多个服务器块的 nginx 请求

匹配多个服务器块的 nginx 请求

假设一个请求匹配多个 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 根据listenserver_name指令选择服务器块。选择服务器块后,它将不会更改它。

有官方文档https://nginx.org/en/docs/http/server_names.html但我建议你读一下这篇文章https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms

相关内容