【黄啊码】nginx如何设置php运行的

禁止访问 PHP 脚本可以通过 Nginx 服务器配置中的多种方式来实现。以下是其中的一些常见方法,您可以根据实际需求选择合适的方式:

1 禁用 PHP 解析:

在 Nginx 配置中,确保 PHP 脚本无法被解析,从而禁止 PHP 执行。

location ~ \.php$ {

deny all;

}

2 限制访问路径:

限制只允许访问特定路径下的 PHP 脚本,其他路径禁止。

location /public {

允许访问 /public 下的 PHP 脚本

location ~ \.php$ {

fastcgi_pass unix:/var/run/php-fpm.sock;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME document_rootfastcgi_script_name;

}

}

禁止访问其他路径的 PHP 脚本

location ~ \.php$ {

deny all;

}

3 使用 HTTP Basic 认证:

要求用户提供用户名和密码以访问 PHP 脚本。

location ~ \.php$ {

auth_basic "Restricted";

auth_basic_user_file /etc/nginx/.htpasswd; # 使用 htpasswd 生成密码文件

...

}

4 IP 地址访问控制:

限制只有特定的 IP 地址可以访问 PHP 脚本。

location ~ \.php$ {

allow 192.168.1.1; # 允许的 IP 地址

deny all; # 禁止其他 IP 地址

...

}

5 Referer 检查:

检查 HTTP Referer 头,只允许特定来源的请求。

location ~ \.php$ {

valid_referers none blocked example.com; # 允许的 Referer

if ($invalid_referer) {

return 403; # 拒绝无效的 Referer

}

...

}

6 User-Agent 检查:

检查 User-Agent 头,只允许特定 User-Agent 访问。

location ~ \.php$ {

if ($http_user_agent ~* (bad-agent|another-bad-agent)) {

return 403; # 拒绝不良 User-Agent

}

...

}

7 URL 匹配:

通过正则表达式匹配 URL,只允许特定 URL 访问 PHP。

location ~ \.php$ {

if ($request_uri ~* ^/allowed-path/) {

允许的 URL 路径

...

}

return 403; # 其他路径禁止

}

8 文件类型匹配:

只允许特定文件类型的 PHP 文件执行。

location ~ \.php$ {

if (request_filename \~\* \\.php) {

允许的文件类型

...

}

return 403; # 禁止其他文件类型

}

9 设置文件权限:

通过文件系统的权限设置,限制 PHP 脚本的访问。

location ~ \.php$ {

设置文件的访问权限为 600 或更高

...

}

10 利用 Nginx 的 map 模块:

使用 Nginx 的 map 模块来根据条件禁止 PHP 访问。

map remote_addr php_disabled {

default 0;

192.168.1.1 0; # 允许的 IP 地址

~^192\.168\.2\. 1; # 允许的 IP 地址范围

}

location ~ \.php$ {

if ($php_disabled) {

return 403; # 禁止访问

}

...

}

11 利用 Nginx 的 geo 模块:

使用 Nginx 的 geo 模块根据地理位置禁止 PHP 访问。

geo $allowed_country {

default 0;

US 1; # 允许的国家或地区

CA 1;

}

location ~ \.php$ {

if ($allowed_country = 0) {

return 403; # 禁止访问

}

...

}

12 禁止特定 HTTP 方法:

限制只有特定的 HTTP 方法可以访问 PHP 脚本。

location ~ \.php$ {

if (request_method !\~ \^(GET\|POST)) {

return 403; # 禁止其他方法

}

...

}

13 限制访问时间:

限制只有在特定时间段内可以访问 PHP 脚本。

location ~ \.php$ {

if ($time_iso8601 !~ "T(08|09|10|11|12|13):") {

return 403; # 限制访问时段

}

...

}

14 HTTP 访问速率限制:

限制访问速率以减轻服务器负载。

location ~ \.php$ {

limit_req zone=mylimit burst=5 nodelay;

limit_req_status 403;

...

}

15 使用 Nginx 内置变量:

使用 Nginx 的内置变量结合条件语句来根据特定条件禁止 PHP 访问。

location ~ \.php$ {

if ($http_cookie ~* "adminuser=") {

return 403; # 如果包含特定 Cookie

}

...

}

请注意,上述方法可以单独使用或组合使用,具体的选择取决于您的安全需求和服务器配置。同时,

确保在配置中使用适当的测试和调试方法,以确保您的 Nginx 服务器按照预期运行。

相关推荐
BingoGo1 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack1 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理5 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
QQ5110082855 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
WeiXin_DZbishe5 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5