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

Posted

tags:

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

参考技术A nginx中ngx_http_limit_conn_module模块用于限制连接数量,特别是来自单个IP地址的连接数量。并非所有的连接都被计数。只有当服务器处理了请求并且已经读取了整个请求头时,连接才被计数。

$binary_remote_addr对于IPv4地址,变量的大小始终为4个字节,对于IPv6地址则为16个字节。存储状态在32位平台上始终占用32或64个字节,在64位平台上占用64个字节。一个兆字节的区域可以保持大约32000个32字节的状态或大约16000个64字节的状态。如果区域存储耗尽,服务器会将错误返回 给所有其他请求。10M可存储160000个状态

nginx中ngx_http_limit_req_module模块用于限制每一个请求的处理速率,特别是从一个单一的IP地址的请求的处理速率。

我们可以用ab工具测试一下。

并发数50,总共执行次数100

可以看出100个请求在3.3秒完成符合30r/s

参考文章
http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
http://nginx.org/en/docs/http/ngx_http_limit_req_module.html

Nginx限制并发连接数

参考技术A

对于一些服务器流量异常、负载过大,甚至是大流量的恶意攻击访问等,进行并发数的限制(共享内存和并发限制需结合系统定制)
limit_conn_zone 设置共享内存区域参数

limit_conn 设置共享内存区域和给定键值的最大允许连接数

limit_conn_log_level 日志可以调整级别,默认 error

limit_conn_status 返回状态码响应拒绝请求,默认 503

示例

限制来自单个IP地址的请求处理频率,每秒固定处理请求数,推迟过多请求。以此来防止应用层的 DDOS 攻击(共享内存和请求频率需结合系统定制)
limit_req_zone 设置共享内存区域参数

limit_req 设置共享内存区域、突发大小、延时

limit_req_log_level 日志可以调整级别,默认 error

limit_req_status 返回状态码响应拒绝请求,默认 503

示例

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

Nginx并发数每秒连接数下载速度限制,防攻击杀手锏

运维实战 Nginx配置优化

nginx 限制并发访问及请求频率

nginx限制ip并发数

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

控制nginx并发链接数量和客户端请求nginx的速率