千家信息网

在nginx中如何实现单位时间内限制访问频率

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要介绍了在nginx中如何实现单位时间内限制访问频率的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇在nginx中如何实现单位时间内限制访问频率文章都会有所收获,
千家信息网最后更新 2025年12月03日在nginx中如何实现单位时间内限制访问频率

这篇文章主要介绍了在nginx中如何实现单位时间内限制访问频率的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇在nginx中如何实现单位时间内限制访问频率文章都会有所收获,下面我们一起来看看吧。

首先说一下遇到这个问题是因为网站被攻击,阿里云报警,想到要限制一下访问频率,而不是限制ip(限制ip的方案稍后给出)。nginx连接资源被吃空返回状态码是502,添加本方案限制后返回599,与正常状态码区别开。
步骤如下:

首先nginx.conf里面添加如下内容:

map $http_x_forwarded_for  $clientrealip {    "" $remote_addr;    ~^(?p[0-9\.]+),?.*$  $firstaddr;    }    ###safe setting to limit the request number per second    limit_req_status 599;    limit_req_zone $clientrealip zone=allips:70m rate=5r/s;

session池大小70m,如果限制的ip很多 那可以调小,如果限制的ip很少,那可访问的ip很多则要调大
每秒5个请求,这个也是根据情况调节的,5个是比较合适或者说偏大一点点的。

然后修改www.xxoo.com.conf(这是lnmp针对每个虚拟主机都有个配置文件)server里面,location上面添加如下一行:

limit_req zone=allips burst=5 nodelay;

这样重启nginx就可以写个脚本测测并发了。

如下提供一个python并发脚本:

import threadingimport time,urllib2url = 'http://sf.gg/'def worker():  try:   response = urllib2.urlopen(url)   print response.getcode()  except urllib2.httperror, e:   print e.codefor i in range(2000):  t = threading.thread(target=worker)  t.start()

其中2000和http://sf.gg/都是可以修改的,然后执行 python *.py > out 就可以分析out文件里面的状态码的分布了,如果599特别多说频率限制起到作用了。

关于"在nginx中如何实现单位时间内限制访问频率"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"在nginx中如何实现单位时间内限制访问频率"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

限制 频率 单位 时间 内容 状态 知识 文件 篇文章 脚本 合适 一行 主机 价值 作用 大小 情况 操作简单 文章 方案 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 青少年网络安全知识竞赛获奖 网络安全检测测隐私吗 软件开发常见的架构vs 超融合服务器要几台搭建 绝世仙王八荒寻仙录425服务器 小公司一般有多少台服务器 上海互联网科技城 科技互联网概念龙头股 什么软件开发应用 麦芒网络技术广州 中国大唐网络技术有限公司 服务器的运营内存 法院非涉密网络安全自查报告 php软件开发用什么软件 网络安全整体性原则 天津付呗互联网科技有限公司 并购基金数据库 百度云 网络安全手抄报简单漂亮初中 互联网科技公司岗位分布 镇江市网络安全设备 新加坡服务器有什么优势 第五人格全球服务器地图 比较容易考的计算机网络安全 品牌软件开发品质保障 软件开发行业前端设计 金蝶k3数据库结构 学校网络安全责任追究制度 量子纠缠 网络安全 阿坝分销行业直销软件开发 奉贤区高科技软件开发节能标准
0