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

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

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

location ~ \.php$ {
   deny all;
}

限制访问路径:
限制只允许访问特定路径下的 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;
}

使用 HTTP Basic 认证:
要求用户提供用户名和密码以访问 PHP 脚本。

location ~ \.php$ {
   auth_basic "Restricted";
   auth_basic_user_file /etc/nginx/.htpasswd; # 使用 htpasswd 生成密码文件
   # ...
}

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

location ~ \.php$ {
   allow 192.168.1.1; # 允许的 IP 地址
   deny all; # 禁止其他 IP 地址
   # ...
}

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

location ~ \.php$ {
   valid_referers none blocked example.com; # 允许的 Referer
   if ($invalid_referer) {
       return 403; # 拒绝无效的 Referer
   }
   # ...
}

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

location ~ \.php$ {
   if ($http_user_agent ~* (bad-agent|another-bad-agent)) {
       return 403; # 拒绝不良 User-Agent
   }
   # ...
}

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

location ~ \.php$ {
   if ($request_uri ~* ^/allowed-path/) {
       # 允许的 URL 路径
       # ...
   }
   return 403; # 其他路径禁止
}

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

location ~ \.php$ {
   if ($request_filename ~* \.php$) {
       # 允许的文件类型
       # ...
   }
   return 403; # 禁止其他文件类型
}

设置文件权限:
通过文件系统的权限设置,限制 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 服务器按照预期运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/67559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【业务功能篇96】微服务-springcloud-springboot-认证服务-登录注册功能-Auth2.0-分布式session

5.登录功能 通过最基础的登录操作来完成登录处理 登录页面处理 认证服务的处理 /*** 注册的方法* return*/PostMapping("/login")public String login(LoginVo loginVo , RedirectAttributes redirectAttributes){R r memberFeginService.login(loginVo);if(r.getC…

thinkphp6 入门(5)-- 模型是什么 怎么用

一、模型 MVC架构 之前开发一个功能,后端为在控制器(C)中写 php SQL,前端为在页面(V)中写html css js,这就形成了 VC 架构。 但是发现,相同的数据逻辑(SQL&#xf…

Centos、OpenEuler系统安装mysql

要在CentOS上安装MySQL并设置开机自启和root密码,请按照以下步骤进行操作: 确保您的CentOS系统已连接到Internet,并且具有管理员权限(root或sudo访问权限)。打开终端或SSH会话,使用以下命令安装MySQL&…

IntelliJ IDEA的远程开发(Remote Development)

DEA的远程开发功能,可以将本地的编译、构建、调试、运行等工作都放在远程服务器上执行,而本地仅运行客户端软件进行常规的开发操作即可,官方给出的逻辑图如下,可见通过本地的IDE和服务器上的IDE backend将本地电脑和服务器打通&am…

达梦8 在CentOS 系统下静默安装

确认系统参数 [rootlocalhost ~]# ulimit -a core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited【1048576(即 1GB)以上或 unlimited】 scheduling priority (-e) 0 file size (blocks, -f) unlimite…

三、视频设备的枚举以及插拔检测

一、前言 本章主要讲述,如何获取设备名称以及guid,采集设备的采集格式识别,设备的插拔 设备列表以及属性的获取使用的directshow(后续的MediaFoundation无法获取OBS摄像头) 设备的插拔使用的是QT 捕获系统消息,捕获到设备插拔后&a…

day6_网络编程

网络聊天室 客户端 main.c #include "include/errorAndHead.h"void hander(int sig) {while (waitpid(-1, NULL, WNOHANG) > 0); }int main(int argc, const char *argv[]) {/* 捕获 SIGCHLD 信号 hander 处理*/if (signal(SIGCHLD, hander) SIG_ERR){ERR_MSG…

webpack5 (三)

webpack 高级配置 其实就是对 webpack 进行优化,让代码在编译/运行时性能更好 1. 提升开发体验 2. 提升打包构建速度 3. 减少代码体积 4. 优化代码运行性能 一、提升开发体验 sourcemap 在编译打包后所有的 css 和 js 都合并为了一个文件,并多了很多…

APS系统设计经验分享(时间推导II - 2023.09)

在前一篇关于APS系统设计分享文章(《APS系统设计经验分享(时间推导 - 2023.03)》)中,我们提到将会分享使用OptaPlanner作为规划引擎开发APS系统过程中,遇到的一些时间相关的设计建议与异常情况分析。后来一直忙于项目工作,直到现在才想起仍欠…

CC-TAIX01 HONEYWELL 霍尼韦尔连接工厂热智商远程监测系统

CC-TAIX01 HONEYWELL 霍尼韦尔连接工厂热智商远程监测系统 -霍尼韦尔宣布霍尼韦尔连接工厂热智商,一种基于云的远程监测系统,旨在监测和管理关键的热过程数据。这是霍尼韦尔资产绩效管理(APM)投资组合的一部分。 热智商是工业和商业热应用的远程监测解决方案。它将燃烧设备连…

Flink基础实操-计算单词出现次数

🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 个人主页:beixi 本文章收录于专栏(点击传送):【大数据学习】 💓💓持续更新中,感谢各位前辈朋友们支持…

【云原生】容器编排工具Kubernetes

目录 一、 K8S介绍 官网地址: 1.1docker编排与k8s编排相比 1.2特性 1.3功能 二、K8S重要组件 2.1核心组件 (1)Kube-apiserver (2)Kube-controller-manager (3)Kube-scheduler &#x…

DevOps管理软件生命周期

整体的软件开发流程 PLAN:开发团队根据客户的目标制定开发计划 CODE:根据PLAN开始编码过程,需要将不同版本的代码存储在一个库中。GIT,SVN BUILD:编码完成后,需要将代码构建并且运行。MAVEN TEST:成功构建…

【性能优化】聊聊性能优化那些事

针对于互联网应用来说,性能优化其实就是一直需要做的事情,因为系统响应慢,是非常影响用户的体验,可能回造成用户流失。所以对于性能非常重要。最近正好接到一个性能优化的需求,需要对所负责的系统进行性能提升。目前接…

Windows环境下RabbitMQ下载安装

一、准备安装文件 1、下载Erlang 登录网站Downloads - Erlang/OTP,选择“Download Windows installer”,如下图所示: 弹出框中,选在下载保存地址,保存文件,如下图所示: 2、下载RabbitMQ 登录…

ElasticSearch简介

一、基本概念 1、Index(索引) 动词,相当于 MySQL 中的 insert; 名词,相当于 MySQL 中的 Database 2、Type(类型) 在 Index(索引)中,可以定义一个或多个类…

无需公网IP,在家SSH远程连接公司内网服务器「cpolar内网穿透」

文章目录 1. Linux CentOS安装cpolar2. 创建TCP隧道3. 随机地址公网远程连接4. 固定TCP地址5. 使用固定公网TCP地址SSH远程 本次教程我们来实现如何在外公网环境下,SSH远程连接家里/公司的Linux CentOS服务器,无需公网IP,也不需要设置路由器。…

unity tolua热更新框架教程(2)

Lua启动流程 增加脚本luamain,继承luaclient 建立第一个场景GameMain,在对象GameMain挂载脚本LuaMain,启动场景 看到打印,lua被成功加载 lua入口及调用堆栈 这里会执行main.lua文件的main函数 C#接口导出 在此处配置C#导出的代码 …

算法leetcode|75. 颜色分类(rust重拳出击)

文章目录 75. 颜色分类:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java: 75. 颜色分类: 给定一个包含红色、白色和蓝色、共 n…

js集成zTree实现树形结构菜单

官方文档:https://www.treejs.cn/v3/api.php 一、简单创建 zTree 演示 $.fn.zTree.init($("#tree"), setting, zTreeNodes) 的用法$.fn.zTree.init 概述[ 依赖 jquery.ztree.core 核心 js ] zTree 初始化方法,创建 zTree 必须使用此方法 1、页面需要进行 W3C 申明…