nginx 禁止运行php文件下载 (How to prevent php files from being downloaded in nginx?)

Nginx 是一款广泛使用的高性能 Web 服务器软件,支持对 PHP 程序的处理。但在某些情况下,你可能不希望访问者随意下载你的 PHP 文件,而是直接执行它们。在这篇文章中,我们将讨论如何使用 Nginx 防止 PHP 文件被下载。

首先,你需要在 Nginx 的配置文件中添加以下代码:


location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/path/to/php-fpm.sock;
# 禁止下载 PHP 文件
location ~* \.(?:php\d*|phtml)$ {
deny all;
}
}

这里的代码分两部分:

第一部分是处理 PHP 程序的代码,将请求传递到 PHP-FPM(FastCGI 进程管理器)中进行处理。这里的 include fastcgi_params; 是一个包含了 FastCGI 参数的文件。

第二部分是禁止下载 PHP 文件的代码。通常情况下,如果没有这个代码,PHP 文件会被作为简单的文本文件被下载,而不是被执行。这段代码使用了 Nginx 的 deny all; 指令,禁止任何人访问这些文件。

需要注意的是,这个代码块仅仅对 .php 结尾的文件起作用。如果你想禁止其他扩展名或者全局禁止下载功能,请使用其他方法。

另外,如果你的服务器在前面设置了代理(比如 Cloudflare),你还需要将以下代码添加到 Nginx 的配置文件中:

“`
setrealipfrom 103.21.244.0/22;
set
realipfrom 103.22.200.0/22;
setrealipfrom 103.31.4.0/22;
set
realipfrom 104.16.0.0/12;
setrealipfrom 108.162.192.0/18;
set
realipfrom 131.0.72.0/22;
setrealipfrom 141.101.64.0/18;
set
realipfrom 162.158.0.0/15;
setrealipfrom 172.64.0.0/13;
set
realipfrom 173.245.48.0/20;
setrealipfrom 188.114.96.0/20;
set
realipfrom 190.93.240.0/20;
setrealipfrom 197.234.240.0/22;
set
realipfrom 198.41.128.0/17;
setrealipfrom 199.27.128.0/21;
set
realipfrom 2400:cb00::/32;
setrealipfrom 2606:4700::/32;
set
realipfrom 2803:f800::/32;
setrealipfrom 2405:b500::/32;
set
realipfrom 2405:8100::/32;
setrealipfrom 2c0f:f248::/32;
set
realipfrom 2a06:98c0::/29;

realipheader CF-Connecting-IP;
“`

这段代码将 Cloudflare 的 IP 列表添加到设置中,并设置 real_ip_header 参数以指定哪一个 HTTP 头包含客户端实际 IP 地址。

总之,禁止 PHP 文件下载是一项必要的安全措施,Nginx 提供了相对简单的方法来实现它。对于需要保护 PHP 代码的 Web 服务器来说,这是一个非常值得使用的功能。

如有侵犯您的权益请邮件发送:rainpro@foxmail.com,站长看到会第一时间处理
客栈猫 » nginx 禁止运行php文件下载 (How to prevent php files from being downloaded in nginx?)

提供最优质的资源集合

立即查看 了解详情