这个集团
location ~ \.php$ { deny all; }
它能够很好地阻止所有以.php结尾的文件,而且也可以在任何地方使用
但是当这个被添加到上面的块之后(它提供静态文件)
location ^~ /cdn/ { try_files $uri =404; expires 365d; }
cdn / test.php(存在)将被下载,而cdn / test1.php(不存在)给404。
我尝试添加rest; 或嵌套的位置在CDN,但它并没有帮助阻止。
问题是你正在使用的^~匹配字符。 使用该前缀,nginx不会在最长的前缀匹配之后检查正则expression式匹配。
你应该得到你想要的行为:
location /cdn { try_files $uri =404; expires 365d; }