Nginx阻止对php文件的访问

Nginx阻止对php文件的访问,php,nginx,url-rewriting,fastcgi,Php,Nginx,Url Rewriting,Fastcgi,我创建了一个简单的php文件来显示从MYSQL数据库获取的信息。紧接着,我在Nginx中使用了一个重写规则,以使链接seo友好,并屏蔽获取它的.php文件 例:http://localhost/myfile.php?seo=how-要安装linux 重写规则后,我可以访问它,如下所示: http://localhost/how-to-install-linux 我的重写规则是: location / { rewrite ^/([a-zA-Z0-9_$\-]+)$ /myfile.php?seo

我创建了一个简单的php文件来显示从MYSQL数据库获取的信息。紧接着,我在Nginx中使用了一个重写规则,以使链接seo友好,并屏蔽获取它的.php文件

例:
http://localhost/myfile.php?seo=how-要安装linux
重写规则后,我可以访问它,如下所示:

http://localhost/how-to-install-linux
我的重写规则是:

location / {
rewrite ^/([a-zA-Z0-9_$\-]+)$ /myfile.php?seo=$1 last;
rewrite ^/(.*)/$ /$1 permanent; <- just to block trailing slash
}
此规则阻止对我的php文件的完全访问,包括通过seo友好url。 有没有一种方法可以让它在使用NGINX的seo友好版本中工作? 我的其他设置是:

location ~ \.php$ {
try_files $uri =404;
include fcgi.conf;
fastcgi_pass unix:/var/run/ajenti-v-php7.0-fcgi-drnou-php7.0-fcgi-0.sock;

}

我只使用Nginx,没有安装Apache

您可以使用
内部
指令来防止直接访问某个位置。有关详细信息,请参阅

例如:

location = /myfile.php {
    internal;
    include fcgi.conf;
    fastcgi_pass unix:/var/run/ajenti-v-php7.0-fcgi-drnou-php7.0-fcgi-0.sock;
}

它起作用了!谢谢你,伙计。我在谷歌上搜索过一些基本的搜索词,但没有找到任何有用的。再次感谢!
location = /myfile.php {
    internal;
    include fcgi.conf;
    fastcgi_pass unix:/var/run/ajenti-v-php7.0-fcgi-drnou-php7.0-fcgi-0.sock;
}