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并发数及请求速度的主要内容,如果未能解决你的问题,请参考以下文章