try_files 在先前位置中断拒绝

try_files 在先前位置中断拒绝

这一集团

location ~ \.php$ {
     deny all;

}

效果很好,可以阻止一切以 .php 结尾,并且到处也。

但当添加这个上面的 bloc (提供静态文件)

location ^~ /cdn/ {

   try_files $uri =404;
   expires 365d;

}

cdn/test.php(存在)将被下载,而 cdn/test1.php(不存在)则会出现 404。

我尝试在 cdn 中添加 break; 或嵌套位置,但它无助于阻止 cdn 内的 .php。

答案1

问题在于^~您使用的匹配字符。使用该前缀,nginx 不会在最长前缀匹配后检查正则表达式匹配。

您应该通过以下方式获得您想要的行为:

location /cdn {
    try_files $uri =404;
    expires 365d;
}

相关内容