网站nginx配置限制单个IP访问频率,预防DDOS恶意攻击
off999 2025-01-05 19:31 37 浏览 0 评论
一、简介
对于网站来说,尤其是流量较大出名的网站,经常遇到攻击,如DDOS攻击等,虽然有些第三方,如Cloudflare可以挡,但对于动态网站PHP来说,只能挡一部分。这时候需要对于单个IP恶意攻击做出限流。nginx的两个模块可以限流。
nginx两个限流模块:
连接频率限制,ngx_http_limit_conn_module:官方文档:https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
请求频率限制,ngx_http_limit_req_module:官方文档:https://nginx.org/en/docs/http/ngx_http_limit_req_module.html
二、两者模块区别
首先理解请求和连接,HTTP请求建立在一次TCP连接基础上, 一次TCP连接至少产生一次HTTP请求(1次或多次)
网上理论很多,根据名字可知:
- connection是连接,即常说的tcp连接,通过三次握手而建立的一个完整状态机。建立一个连接,必须要三次握手。
- request是指请求,即http请求,tcp连接是有状态的,而构建在tcp之上的http却是无状态的协议。
当然还是看不懂的话,通俗点讲(相对于时间比较):
- limit_req_zone,在 有限的时间 内限制,单个IP每秒或者每分钟只能发出多少请求。多的一概不理会。
- limit_conn_zone, 不限时间 ,只允许单个IP这么多个连接,或者称为并发。如:设置10个连接,第11个连接时,必须等前面有一个已经完成或者释放后,这个连接才能允许。
比如秒杀,抢购,连接频率限制和请求频率限制应该配合使用 , 使用连接频率限制同一IP同时只能有3个连接, 再使用请求频率限制对于同一ip的请求,限制平均速率为5个请求/秒 , 这样比单独只使用一种限制要好很多。
比如只使用请求频率限制 , 可以精确地限制同一ip1秒只能发起5次的http请求 , 假如同一ip1秒内发起了100000次请求 , 虽然限制了只有5次成功响应 , 但是其他的99995次的请求TCP握手建立http连接是不是会消耗服务器资源? 所以还需要配合使用。
三、配置
1、limit_req_zone,示例:
http{
limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
#定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,
#以$binary_remote_addr 为key,限制平均每秒的请求为20个,
#1M能存储16000个状态,rete的值必须为整数,
#如果限制两秒钟一个请求,可以设置成30r/m
server{
location / {
#限制每ip每秒不超过20个请求,漏桶数burst为5
#brust的意思就是,如果第1秒、2,3,4秒请求为19个,
#第5秒的请求为25个是被允许的。
#但是如果你第1秒就25个请求,第2秒超过20的请求返回503错误。
#nodelay,如果不设置该选项,严格使用平均速率限制请求数,
#第1秒25个请求时,5个请求放到第2秒执行,
#设置nodelay,25个请求将在第1秒执行。
limit_req zone=allips burst=5 nodelay;
}
}
}2、limit_conn_zone,示例:
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
#定义一个名为addr的limit_req_zone用来存储session,大小是10M内存,
#以$binary_remote_addr 为key
#nginx 1.18以后用limit_conn_zone替换了limit_conn,
#且只能放在http{}代码段.
server {
location / {
limit_conn addr 10; #连接数限制,并发数
#设置给定键值的共享内存区域和允许的最大连接数。超出此限制时,服务器将返回503(服务临时不可用)错误.
#如果区域存储空间不足,服务器将返回503(服务临时不可用)错误
}
}
} 3、搭配一起使用
http {
...
...
limit_req_zone $binary_remote_addr zone=req_zone:1m rate=20r/s;
#限制连接请求设置,访问内存10M,所有访问ip 限制每秒10个请求
limit_conn_zone $binary_remote_addr zone=addr:10m;
#限制连接IP设置
...
...
server {
listen 80;
server_name ywbj.cc;
location / {
...
limit_req zone=req_zone burst=5 nodelay;
limit_conn addr 5;
...
}
}
}四、压力测试工具
1、ab命令
ab是apache自带的压力测试工具。一般不用额外安装,ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。
测试命令
ab -c 10 -n 100 https://ywbj.cc/
#-c10表示并发用户数为10
#-n100表示请求总数为1002、wrk命令
需自己安装,地址:https://github.com/wg/wrk
安装
git clone git@github.com:wg/wrk.git
#或者自己下载解压
cd wrk
#进入目录
make
#make编译后在目录可使用wrk命令,先安装make,unzip这些工具。测试命令:
wrk -t12 -c100 -d30s https://ywbj.cc
#12线程,100连接,30s时间还有其他压测工具,自行研究
相关推荐
- 大智慧炒股软件免费版(大智慧炒股软件手机版下载安装)
-
你是不是点到里面的收费行情了,有Level-2行情数据的肯定要收费的这几种都可以提供一般的股票行情、交易功能。特点方面,同花顺不怎么好上手,普及程度不高。大智慧经典版可以查询主力资金。钱龙旗舰版是界面...
- 短信验证码(短信验证码平台app)
-
短信验证码可以通过以下步骤来获取和使用:明确结论:获取短信验证码需要先输入手机号码,并且会在短信中收到验证码。解释原因:短信验证码是一种验证身份的方式,用于确认用户提供的手机号是否有效,以及确保用户是...
- 下载一个微信2(下载一个微信号)
-
首先打开手机里面的应用商店下载安装一个微信APP,然后分别用你的2个手机号注册微信或已经注册的登陆微信就可以了,这里你可以一个微信APP上分别切换不同微信号登陆使用,不过这个有点不方便使用,接下来的办...
- 视频格式转换器安卓版(视频格式转换器手机软件)
-
没有。可以利用电脑来转换。所需工具:格式工厂步骤:打开格式工厂,第一个界面就是视频转换的了!会看到可以转换成有很多种格式的!那就选择需要转换的格式。选择转换成MP4格式,添加完成之后直接点击“点击开始...
- 12306购票最简单方法(登录12306购票)
-
要使用铁路12306进行买票需选择出发地点以及目的地,勾选车票类型后,选择查询车票,最后提交订单方可买票,具体操作步骤如下:轻点右侧地址位置选择目的地轻点右侧地址位置选择目的地,回到铁路12306首页...
- 下载手机卫士(下载手机卫士官方版)
-
360手机卫士苹果版来自奇虎360推出的一款iPhone手机管理软件,360手机卫士苹果版推为iOS用户提供专业、完善和高效的移动设备管理服务,360手机卫士手机版可以实现流量监控、电池管家、隐私空间...
- 免费破解软件下载网站(免费破解版软件)
-
可以用腾讯手机管家的小火箭,它的功能很好用。安装完成以后,手机屏幕上就有那个加速圈--小火箭。使用小火箭加速平均提升手机速度35%。按住小火箭移到最下方,释放升空,即可轻松清理多余后台进程,释放手机内...
- 应用管家下载(应用市场官方正版下载安装)
-
1、在手机桌面找到腾讯手机管家,点击打开。2、找到右上角的头像,点击进入个人界面。3、点击右上角的齿轮图标,点击进入设置界面。4、找到安全检测,点击进去。5、找到屏幕下方的恶意网址拦截6、这样就把网址...
-
- 联通网上营业厅官网(中国联通官网登录入口)
-
联通综合门户网站网上营业厅是中国联通推出的全国统一网上营业厅,中国联通网上营业厅为用户提供话费查询、话费充值、业务办理等服务,还提供3G号码、4G号码、3G套餐、4G套餐、5G套餐、手机、手机配件和充值卡购买等服务。还可以购买套餐,送手机等...
-
2026-02-02 14:43 off999
- 联盟平台app(联盟平台app下载)
-
英雄联盟除了wegame别的基本上不可以用,因为如果是非腾讯合作伙伴,运行英雄加盟应该是被判为外挂插件,或者是你直接启动客户端不用任何插件这样也可以。原来用的是tgp后来一点点被改成了wegame,...
-
- 炒股神器免费版(炒股神器是真的吗)
-
炒股,指倒买倒卖股票。炒股的核心内容就是通过证券市场的买入与卖出之间的股价差额,获取利润。现在越多越来的人都了闲钱,可以用来投资理财。而炒股是许多人以钱生钱的首要选择,炒股回报高但是风险也极高。我们需要一款好的手机炒股软件来辅助我们判断。下...
-
2026-02-02 14:03 off999
- 软件商店oppo官方下载(软件商店oppo官方下载最新版安装newwear)
-
在桌面找到软件商店在oppo的桌面上找到软件商店,也就是应用商店。打开商店看到软件打开商店之后,能够看到有很多的软件。下载软件看详细信息在此界面可以进行下载软件,看到软件的详细信息。OPPO手机...
- 红警下载(红警下载中文版下载)
-
网上直接搜可以找到很多下载资源,但是这些资源不一定能用!如果真想玩,建议直接在某宝花几块钱购买资源,不仅方便而且会教给你怎么设置,出现什么问题怎么解决,很方便!这款游戏资源不是很好找,网上一搜确实能找...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
win7系统还原步骤图解(win7还原电脑系统的步骤)
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
16949认证费用是多少(16949审核员太难考了)
-
linux软件(linux软件图标)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
