我的配置在空server { }
定义
location ^~ /foo/ {
alias /var/www/foo/;
}
但是当我在一个相当大的服务器定义(一个用于wordpress多站点配置)中移动它时,它将停止工作并且wordpress将响应它(这显然不是我的意图)。
我试图在服务器块的开头或结尾处放置,但这并没有改变它。
如何强制nginx使用此位置?
答案 0 :(得分:23)
您可能正在寻找break
。
location ^~ /foo/ {
alias /var/www/foo/;
break;
}
来自HttpRewriteModule documentation:
last
- 完成当前重写指令的处理 通过搜索匹配重新启动进程(包括重写) 来自所有可用位置的URI。
break
- 完成当前重写指令的处理 非重写处理在当前位置块内继续 仅注意外部位置块,last和break是有效的 相同。
答案 1 :(得分:2)
Nginx中的位置块是独占的。如果您使用location ^~
,则除非您将这些规则复制为嵌套在同一位置块下,否则其他规则可能不会应用静态对象的过期标头。
如果你可以分享你的完整配置,那么我可以让它适合你。您很可能需要使用嵌套的位置块。
答案 2 :(得分:0)
bg.clipTo = function(ctx) {
ctx.save();
ctx.rotate((angle * -1) * (Math.PI / 180));
ctx.rect(left, top, width, height);
ctx.restore();
ctx.stroke();
};
如果URI中不存在尾随斜杠,则会出现问题。 见https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms#matching-location-blocks