我有这样的配置,它作为预期空server { }
定义
location ^~ /foo/ {
alias /var/www/foo/;
}
但是,当我提出这个在相当大服务器定义(一个用于WordPress的多站点配置),它会停止工作,WordPress会对此作出回应(这显然不是我的意图)。
我试图把在开始时或服务器块的结束,但这并没有改变它。
我怎么能强制nginx的使用这个位置?
我有这样的配置,它作为预期空server { }
定义
location ^~ /foo/ {
alias /var/www/foo/;
}
但是,当我提出这个在相当大服务器定义(一个用于WordPress的多站点配置),它会停止工作,WordPress会对此作出回应(这显然不是我的意图)。
我试图把在开始时或服务器块的结束,但这并没有改变它。
我怎么能强制nginx的使用这个位置?
您可能正在寻找break
。
location ^~ /foo/ {
alias /var/www/foo/;
break;
}
从HttpRewriteModule文档 :
last
-完成当前重写指令的处理和用于从所有可用的位置上的URI相匹配的搜索重新启动过程(包括重写)。
break
-完成当前重写指令和非重写处理的处理仅在当前位置块内继续。需要注意的是外面的位置块,最后和突破实际上是相同的。
在Nginx的位置块是排他的。 如果您使用location ^~
然后其他规则可能到期,除非你复制这些规则嵌套在同一位置块静态物体头将不适用。
如果你可以分享您的完整的配置,然后我可以让它为你工作。 最有可能你需要使用嵌套的位置块。
location = /aliasname/ {
alias /path/to/alias/
}
尾随斜线将是一个问题,如果它不存在URI。 见https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms#matching-location-blocks