如何让nginx的停止处理其他规则和服务于特定的位置?(How to make nginx to s

2019-06-24 16:02发布

我有这样的配置,它作为预期空server { }定义

location ^~ /foo/ {
     alias /var/www/foo/;
     }

但是,当我提出这个在相当大服务器定义(一个用于WordPress的多站点配置),它会停止工作,WordPress会对此作出回应(这显然不是我的意图)。

我试图把在开始时或服务器块的结束,但这并没有改变它。

我怎么能强制nginx的使用这个位置?

Answer 1:

您可能正在寻找break

location ^~ /foo/ {
    alias /var/www/foo/;
    break;
}

从HttpRewriteModule文档 :

last -完成当前重写指令的处理和用于从所有可用的位置上的URI相匹配的搜索重新启动过程(包括重写)。

break -完成当前重写指令和非重写处理的处理仅在当前位置块内继续。

需要注意的是外面的位置块,最后和突破实际上是相同的。



Answer 2:

在Nginx的位置块是排他的。 如果您使用location ^~然后其他规则可能到期,除非你复制这些规则嵌套在同一位置块静态物体头将不适用。

如果你可以分享您的完整的配置,然后我可以让它为你工作。 最有可能你需要使用嵌套的位置块。



Answer 3:

location = /aliasname/ { 
  alias /path/to/alias/
}

尾随斜线将是一个问题,如果它不存在URI。 见https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms#matching-location-blocks



文章来源: How to make nginx to stop processing other rules and serve a specific location?
标签: nginx