nginx 中的位置指令仅适用于 root,嵌套在 / 中

Ale*_*ner 2 nginx

我有一个 proxy_pass 在 / 上工作,并且希望某些配置仅适用于 root。

我试过了

location / {
   proxy_pass http://foo.com/
}

location = / {
   subs_filter 'foo' 'bar';
}
Run Code Online (Sandbox Code Playgroud)

但我从 foo.com 收到 404 - 我如何使 subs_filter 仅适用于根?

AD7*_*six 5

对于nginx来说,只使用“the”一个匹配的位置块;在问题中,这意味着对于 url 来说/没有 proxy_pass - 它将将该请求视为对根目录中的文件的请求(默认情况下,如果未配置)。

文档中有一个与问题非常相似的示例:

location /user/ {
    proxy_pass http://user.example.com;
}

location = /user {
    proxy_pass http://login.example.com;
}
Run Code Online (Sandbox Code Playgroud)

将其应用于问题,唯一缺少的是将 proxy_pass 添加到= /位置块,即

location / {
   proxy_pass http://foo.com/
}

location = / {
   proxy_pass http://foo.com/
   subs_filter 'foo' 'bar';
}
Run Code Online (Sandbox Code Playgroud)