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