nginx限制ip并发数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx限制ip并发数相关的知识,希望对你有一定的参考价值。

以下为配置过程:

http层:

技术分享

server层:

技术分享

 

limit_conn addr 2; 表示限制并发数量最高为2,这个数字可以根据自己实际情况设置

 

测试:

写一个测试用的a.jsp

在另外一台服务器用ab命令测试并发效果

# ab -c 5 -t 10 http://192.2.4.31/a.php

这里指定并发数为5,大于上面配置的最高限制

回到nginx 服务器查看访问日志

tail -f access.log

 

技术分享

可以看到很多请求的返回状态为503,

增加limit_conn addr 的值为10, 再次用ab测试, 会看到返回状态都为200了, 说明配置有效

 

 

 

配置说明:

其中有两个关键指令的定义

(1) limit_conn_zone 

limit_conn_zone $binary_remote_addr zone=addr:10m;

limit_conn_zone 指令用来定义回话状态存储区域

$binary_remote_addr  表示以客户端的ip作为键

zone= addr:10m 表示分配一个名为‘addr‘ 的区域,空间大小10m

相当于这个区域记录了ip的会话状态信息

(2)limit_conn

limit_conn指令用来限制并发连接数

limit_conn addr 2;表示到名为‘addr‘ 这个区域中检索ip键,不允许有超过2个的回话状态,超过的话会有返回503,

通过这两项的配置, 就可以实现ip并发限制

以上是关于nginx限制ip并发数的主要内容,如果未能解决你的问题,请参考以下文章

Nginx限制并发连接数

Nginx 限制ip并发数及请求速度

nginx配置限制同一个ip的访问频率

Nginx限制访问速率和最大并发连接数模块--limit (防止DDOS攻击)

运维实战 Nginx配置优化

Nginx高并发设置跟压测