拒绝访问PHP文件(Nginx)

拒绝访问PHP文件(Nginx),php,linux,ubuntu,nginx,webserver,Php,Linux,Ubuntu,Nginx,Webserver,我希望Nginx拒绝访问特定的PHP文件,我们称之为donotexposme.PHP,但它似乎不起作用,PHP脚本照常运行。以下是配置文件中的内容: location / { root /var/www/public_html; index index.php; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_

我希望Nginx拒绝访问特定的PHP文件,我们称之为
donotexposme.PHP
,但它似乎不起作用,PHP脚本照常运行。以下是配置文件中的内容:

location / {
    root /var/www/public_html;
    index index.php;
}

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /var/www/public_html$fastcgi_script_name;
    include fastcgi_params;
}

location /donotexposeme.php {
    deny all;
}

当然,每次编辑配置时,我都会重新加载
sudo服务nginx
(或
重新启动
)。

nginx确定哪个位置匹配的顺序可以在这里找到:

使用以下任一项将在任何其他正则表达式之前进行匹配:

location = /donotexposeme.php


第一个是精确匹配,而后者是正则表达式前缀匹配

您是否尝试过将声明移动到
位置上方
?@Jack是的,刚才。同样的事情。或者,使用
location^~/donotexposeme.php
@Jack,谢谢。你能告诉我为什么吗?(可能在回答中)如果您不想暴露donotexposeme.php的存在,为什么返回403而不是404?示例中有一个小错误:因为使用正则表达式匹配,所以必须转义句点才能逐字匹配:
location^~/donotexposeme\.php
location ^~ /donotexposeme\.php