首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nginx禁止访问php的各种形式

nginx禁止访问php的各种形式

作者头像
友儿
发布于 2023-10-21 05:54:50
发布于 2023-10-21 05:54:50
1.1K00
代码可运行
举报
文章被收录于专栏:友儿友儿
运行总次数:0
代码可运行
禁止访问PHP脚本可以通过Nginx服务器配置中的多种方式来实现。以下是其中的一些常见方法,您可以根据实际需求选择合适的方式:

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ \.php$ {
deny all;
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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脚本。)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ \.php$ {
  auth_basic "Restricted";
  # 使用 htpasswd 生成密码文件
  auth_basic_user_file /etc/nginx/.htpasswd;
# ...
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ \.php$ {
  allow 192.168.1.1; # 允许的 IP 地址
  deny all; # 禁止其他 IP 地址
  # ...
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ \.php$ {
  valid_referers none blocked example.com; # 允许的 Referer
  if ($invalid_referer) {
  return 403; # 拒绝无效的 Referer
  }
  # ...
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ \.php$ {
  if ($http_user_agent ~* (bad-agent|another-bad-agent)) {
  return 403; # 拒绝不良 User-Agent
  }
  # ...
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ \.php$ {
  if ($request_uri ~* ^/allowed-path/) {
      # 允许的 URL 路径
      # ...
  }
  return 403; # 其他路径禁止
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ \.php$ {
  if ($request_filename ~* \.php$) {
          # 允许的文件类型
          # ...
  }
  return 403; # 禁止其他文件类型
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ \.php$ {
  # 设置文件的访问权限为 600 或更高
  # ...
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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; # 禁止访问
}
  # ...
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
geo $allowed_country {
  default 0;
  US 1; # 允许的国家或地区
  CA 1;
}

location ~ \.php$ {
  if ($allowed_country = 0) {
      return 403; # 禁止访问
  }
  # ...
}

禁止特定HTTP方法 (限制只有特定的HTTP方法可以访问PHP脚本)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ \.php$ {
  if ($request_method !~ ^(GET|POST)$) {
      return 403; # 禁止其他方法
  }
  # ...
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ \.php$ {
  if ($time_iso8601 !~ "T(08|09|10|11|12|13):") {
      return 403; # 限制访问时段
  }
  # ...
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ \.php$ {
  limit_req zone=mylimit burst=5 nodelay;
  limit_req_status 403;
  # ...
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ \.php$ {
  if ($http_cookie ~* "adminuser=") {
      return 403; # 如果包含特定 Cookie
  }
  # ...
}
请注意,上述方法可以单独使用或组合使用,具体的选择取决于您的安全需求和服务器配置。同时,确保在配置中使用适当的测试和调试方法,以确保您的 Nginx 服务器按照预期运行。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射
在上一章中我们学习了《MyBatis学习总结(一)——ORM概要与MyBatis快速起步》,这一章主要是介绍MyBatis核心配置文件、使用接口+XML实现完整数据访问、输入参数映射与输出结果映射等内容。
张果
2018/10/09
1.5K0
MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射
Spring+MyBatis实例详解「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149527.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/12
2310
Spring+MyBatis实例详解「建议收藏」
MyBatis学习总结(三)——多表关联查询与动态SQL
假定一个员工(emp)拥有一个登录用户(user),员工与用户表之间是一对一关系:
张果
2018/10/09
8.4K0
MyBatis学习总结(三)——多表关联查询与动态SQL
MyBatis学习总结(一)——ORM概要与MyBatis快速起步
程序员应该将核心关注点放在业务上,而不应该将时间过多的浪费在CRUD中,多数的ORM框架都把增加、修改与删除做得非常不错了,然后数据库中查询无疑是使用频次最高、复杂度大、与性能密切相关的操作,我们希望得到一种使用方便,查询灵活的ORM框架,MyBatis可以满足这些要求,MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架,它也是SSM框架集成中的重要组成部分。
张果
2018/10/09
9900
MyBatis学习总结(一)——ORM概要与MyBatis快速起步
SpringBoot学习笔记(四)——Spring Boot集成MyBatis起步
程序员应该将核心关注点放在业务上,而不应该将时间过多的浪费在CRUD中,多数的ORM框架都把增加、修改与删除做得非常不错了,然后数据库中查询无疑是使用频次最高、复杂度大、与性能密切相关的操作,我们希望得到一种使用方便,查询灵活的ORM框架,MyBatis可以满足这些要求,MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架,它也是SSM框架集成中的重要组成部分。
张果
2022/05/09
6060
SpringBoot学习笔记(四)——Spring Boot集成MyBatis起步
Mybatis分解式查询
一、Mybatis一对多分解式查询 分解式查询就是将一条Sql语句拆分成多条 在MyBatis多表查询中,使用连接查询时一个Sql语句就可以查询出所有的数据。如: # 查询班级时关联查询出学生 select *    from classes    left join student    on student.classId = classes.cid 也可以使用分解式查询,即将一个连接Sql语句分解为多条Sql语句,如: # 查询班级时关联查询出学生 select * from
会洗碗的CV工程师
2023/04/12
4340
Mybatis分解式查询
MyBatis框架(二)
导包, 配置mybatis的总配置文件: mybatis-config.xml, 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE con
二十三年蝉
2018/02/28
7960
MyBatis框架(二)
_Mybatis分解式查询
也可以使用分解式查询,即将一个连接Sql语句分解为多条Sql语句,如: # 查询班级时关联查询出学生
会洗碗的CV工程师
2023/11/20
1880
_Mybatis分解式查询
MyBatis魔法堂:即学即用篇
一、前言                                          本篇内容以理解MyBatis的基本用法和快速在项目中实践为目的,遵循Make it work,better and excellent原则。 技术栈为MyBatis3.2.7+log4j1.2.17+sqlite3+jdk1.7。 二、示例                                 示例代码功能:     学校人员管理系统,对象分别为学生、教师和班级,学生与班级为多对一关系,班级与教师为
^_^肥仔John
2018/01/18
1.6K0
Spring+Mybatis+Maven+Mysql编程实战
image.png 封面是Niagara Falls,世界第一大瀑布。 概述 这篇文章主要讲解使用eclipse对Spring+Maven+Mybatis+Mysql项目搭建过程以及简单实战展示,对于eclipse的Maven配置以及Mysql的安装这里就不做介绍了,大家可以在百度上找找。 1.1 数据库表创建 CREATE TABLE student( ID INT NOT NULL, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (ID
大数据和云计算技术
2018/03/08
1K0
Spring+Mybatis+Maven+Mysql编程实战
Mybatis | Mybatis学习笔记(下)
思考:我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率?
啵啵鱼
2022/11/23
7890
Mybatis | Mybatis学习笔记(下)
Mybatis学习笔记之二(动态mapper开发和spring-mybatis整合)
Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称。
Kevin_Zhang
2019/02/20
1.3K0
Mybatis学习笔记之二(动态mapper开发和spring-mybatis整合)
mybatis笔记整理mybatis的基本用法及配置:
mybatis的基本用法及配置: 本文涉及知识点: 1、mybatis入门 2、配置版CRUD 3、关联查询(1:1&1:n) 4、注解版CRUD 5、注解版关联查询 6、sql语句构建器版
贪挽懒月
2018/05/18
1.7K0
MyBatis(2)——MyBatis 深入学习
编写日志输出环境配置文件 在开发过程中,最重要的就是在控制台查看程序输出的日志信息,在这里我们选择使用 log4j 工具来输出: 准备工作: 将【MyBatis】文件夹下【lib】中的 log4j 开头的 jar 包都导入工程并添加依赖。 在【src】下新建一个文件 log4j.properties 资源: # Global logging configuration # 在开发环境下日志级别要设置成 DEBUG ,生产环境设为 INFO 或 ERROR log4j.rootLogger=DEBUG
我没有三颗心脏
2018/04/26
9280
MyBatis(2)——MyBatis 深入学习
Spring Boot Mybatis 搞反向工程,太方便咯。。
关注微信公众号:Java技术栈,在后台回复:Mybatis,可以获取我整理的 N 篇 Mybatis 教程,都是干货。
Java技术栈
2020/11/23
8380
Spring Boot Mybatis 搞反向工程,太方便咯。。
Mybatis-06 动态Sql
在数据库字段命名规范中常常用下划线 “_” 对单词进行连接,如:"create_time",而开发中实体属性通常会采用驼峰命名法命名为 createTime 。
张小驰出没
2021/04/15
4940
Mybatis-06  动态Sql
Spring Boot Mybatis 搞反向工程,太方便咯。。
1.拷贝 Mybatis 反向工程配置文件到项目的根目录下 2. 根据项目及表的情况,修改 GeneratorMapper.xml 配置 如果使用 高版本 , 驱动类变为:com.mysql.cj
Java小咖秀
2021/02/20
3890
MyBatis学习总结(四)——MyBatis缓存与代码生成
缓存可以提高系统性能,可以加快访问速度,减轻服务器压力,带来更好的用户体验。缓存用空间换时间,好的缓存是缓存命中率高的且数据量小的。缓存是一种非常重要的技术。
张果
2018/11/08
1.6K0
Mybatis基础
虽然我们能够通过JDBC来连接和操作数据库,但是哪怕只是完成一个SQL语句的执行,都需要编写大量的代码,更不用说如果我还需要进行实体类映射,将数据转换为我们可以直接操作的实体类型,JDBC很方便,但是还不够方便。
用户9645905
2023/10/29
4500
Mybatis基础
Mybatis学习笔记--[持续更新中]
MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁 移到了Google Code。随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis。代码于 2013年11月迁移到Github。
SerMs
2022/03/30
7760
Mybatis学习笔记--[持续更新中]
相关推荐
MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档