Nginx 限流模块:限制高并发和IP访问频率 面试常考

52 篇文章 0 订阅
6 篇文章 1 订阅

Nginx 是我们常用的负载均衡和反向代理服务器,并发性能非常优秀。

但是在并发量极大的情况下,必要限流措施还是需要的,Nginx 的有对应的模块插件可通过简单配置来完成这个功能。


限制并发,限制ip并发数,也是说限制同一个ip同时连接服务器的数量。
1、添加limit_conn_zone
这个变量只能在http使用。
http{
...
#定义一个名为one的limit_zone,大小10M内存来存储session,
#以$binary_remote_addr 为key
#nginx 1.18以后用limit_conn_zone替换了limit_conn
#且只能放在http作用域
limit_conn_zone $binary_remote_addr zone=one:10m;
2、添加limit_conn
这个变量可以在http, server, location使用。只限制一个站点,所以添加到server里面。
server{
...
location {
...
limit_conn one 20; #连接数限制
#带宽限制,对单个连接限数,如果一个ip两个连接,就是500x2k
limit_rate 500k;
...
}
...
}
3、重启Nginx。


限制IP访问频率
限制同一个ip在一段时间里连接服务器的次数,可以一定程度上防止类似CC这种快速频率请求的攻击。
1、添加limit_req_zone
这个变量只能在http使用
http{
...
#定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,
#以$binary_remote_addr 为key,限制平均每秒的请求为5个,
#1M能存储16000个状态,rete的值必须为整数,
#如果限制两秒钟一个请求,可以设置成30r/m
limit_req_zone $binary_remote_addr zone=allips:10m rate=5r/s;
...
2、添加limit_req
这个变量可以在http, server, location使用。只限制一个站点,所以添加到server里面。
3、重启Nginx。
上面两种配置,注意看注释,比较实用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fish_study_csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值