nginx 优先考虑嵌套位置,而不是外部位置块

nginx 优先考虑嵌套位置,而不是外部位置块

有人能解释一下为什么它不能像人们期望的那样工作吗?在下面的 nginx 配置中,假设第一个 nginx 将使用正则表达式匹配的图像扩展块,然后它才会进入内部块,在该块中,它^~优先于其他所有内容。

似乎 nginx 正在从更大角度考虑问题而不管范围如何,并^~ /images在外部正则表达式扩展块之前匹配类似这样的请求/images/something.png

location ~* \.(css|js|jpg|png|gif|ico)$ {
    expires 7d;
    add_header Image-By-Extension 1;
}

location / {
    location ^~ /images {
        add_header Image-By-Folder 1;
        ...
    }
}

答案1

是的,nginx 必须选择一个位置,这样即使您嵌套这些位置,它也不会稍后报告匹配。当您使用~^运算符时,您告诉 nginx 避免查看正则表达式位置块,如果它是与当前请求 URI 匹配的最长前缀位置块。

我在这里解释了整个过程:Nginx 重写规则 403 错误

相关内容