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;
setrealipfrom 103.22.200.0/22;
setrealipfrom 103.31.4.0/22;
setrealipfrom 104.16.0.0/12;
setrealipfrom 108.162.192.0/18;
setrealipfrom 131.0.72.0/22;
setrealipfrom 141.101.64.0/18;
setrealipfrom 162.158.0.0/15;
setrealipfrom 172.64.0.0/13;
setrealipfrom 173.245.48.0/20;
setrealipfrom 188.114.96.0/20;
setrealipfrom 190.93.240.0/20;
setrealipfrom 197.234.240.0/22;
setrealipfrom 198.41.128.0/17;
setrealipfrom 199.27.128.0/21;
setrealipfrom 2400:cb00::/32;
setrealipfrom 2606:4700::/32;
setrealipfrom 2803:f800::/32;
setrealipfrom 2405:b500::/32;
setrealipfrom 2405:8100::/32;
setrealipfrom 2c0f:f248::/32;
setrealipfrom 2a06:98c0::/29;
realipheader CF-Connecting-IP;
“`
这段代码将 Cloudflare 的 IP 列表添加到设置中,并设置 real_ip_header
参数以指定哪一个 HTTP 头包含客户端实际 IP 地址。
总之,禁止 PHP 文件下载是一项必要的安全措施,Nginx 提供了相对简单的方法来实现它。对于需要保护 PHP 代码的 Web 服务器来说,这是一个非常值得使用的功能。
客栈猫 » nginx 禁止运行php文件下载 (How to prevent php files from being downloaded in nginx?)