多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
禁止访问 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_root$fastcgi_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 服务器按照预期运行。