如何让nginx停止处理其他规则并服务于特定位置?

sor*_*rin 16 nginx

我有这个配置在空server { }定义中按预期工作

location ^~ /foo/ {
    alias /var/www/foo/;
}
Run Code Online (Sandbox Code Playgroud)

但是当我在一个相当大的服务器定义(一个用于wordpress多站点配置)中移动它时,它将停止工作并且wordpress将响应它(这显然不是我的意图).

我试图在服务器块的开头或结尾处放置,但这并没有改变它.

如何强制nginx使用此位置?

riv*_*ers 25

你可能正在寻找break.

location ^~ /foo/ {
    alias /var/www/foo/;
    break;
}
Run Code Online (Sandbox Code Playgroud)

HttpRewriteModule文档:

HttpRewriteModule - 完成当前重写指令的处理并重新启动该过程(包括重写),并搜索来自所有可用位置的URI匹配.

last - 完成当前重写指令的处理,并且仅在当前位置块内继续进行非重写处理.

请注意,外部位置块,last和break实际上是相同的.

  • 它适用于重写规则,而不适用于位置指令. (9认同)