Nginx 块根目录

Nginx block root directory

我有nginx。里面有个站点,站点根目录是/root/SITE 在这个 SITE 目录中,我有一些 .php 文件和几个目录。我如何才能仅拒绝访问 /root/SITE 目录中的 .php 文件(我的意思是在 /root/SITE .php 文件中的那几个目录中不应该被屏蔽)

所以你要求在你的 Nginx 配置中对于这个服务器块,只允许 PHP 文件,其他所有东西都会得到 404?有很多方法可以做到这一点(最好在更特定于 Nginx 的地方询问)——这里只是一种方法:

server {
    listen 80;
    server_name example.com;    
    root /var/www/html;

    location ~ \.php$ {
        include fastcgi.conf;
    }

    location / {
        return 404;
    }
}

请注意,使用此方法时,位置块的顺序很重要,因为第一个正则表达式位置获胜。此外,如果出于某种原因需要支持 .PHP 文件,则可以使用不区分大小写的位置正则表达式运算符 ~*

请记住,这意味着图像文件和 CSS 文件以及其他任何内容都将被拒绝。如果您推送(或在其中创建)PHP,您将只能提供图像和样式表。这也不允许您通过浏览到没有尾随文件名的站点根目录来访问 index.php。

我建议您可能有可以通过不同的、更好的方式来满足的需求。您应该更全面地解释您要做什么。您试图为您的应用程序创建什么样的安全性?