有人可以解释为什么这不能像人们期望的那样工作吗?在以下 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;
...
}
}
是的,nginx 必须选择一个位置,因此即使您嵌套这些位置,它也不会在以后报告匹配。当您使用
~^
运算符时,如果它是与当前请求 URI 匹配的最长前缀位置块,则告诉 nginx 避免查看正则表达式位置块。我在这里解释了整个过程:Nginx rewite rules 403 error。