Nginx 阻止访问 php 个文件

Nginx block access to php files

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

例如:http://localhost/myfile.php?seo=how-to-install-linux 重写规则后,我可以像这样访问它:

http://localhost/how-to-install-linux

我的重写规则是:

location / {
rewrite ^/([a-zA-Z0-9_$\-]+)$ /myfile.php?seo= last;
rewrite ^/(.*)/$ / permanent; <- just to block trailing slash
}

我的问题是我还想阻止对我的 php 文件的任何直接访问,我只希望 seo 友好 url 工作。

location = /myfile.php {
deny all;
}

此规则阻止对我的 php 文件的完全访问,包括通过 seo friendy 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。

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

例如:

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