首页 > 解决方案 > 关于nginx位置优先级的困惑

问题描述

例子:

location /images/a/ {
    return 200;
}
    
location ~ \/images\/a\/test\.png$ {
    return 502;
}
location ^~ /images/{
    return 501;
}
    

我的困惑是当我访问http://website.com/images/a/test.png时,响应代码是 502 而不是 501

标签: nginx

解决方案


nginx 如何处理请求

无论列出的顺序如何,nginx 首先搜索由文字字符串给出的最具体的前缀位置。

所以选择的前缀位置是location /images/a/. 由于此位置未使用^~修饰符标记,因此正则表达式位置随后按顺序处理,直到找到匹配项。


推荐阅读