nginx限流配置(nginx流量限制)

Nginx配置限流

Nginx有限流功能,是基于漏桶算法实现的

nginx限流配置(nginx流量限制)

limitreqzone是配置在http模块中的

#设置限流 zone用来定义ip状态和url访问频率的共享区域,其中mylimit为区域名称,冒号后为区域大小,16000个IP地址的状态信息大约是1M,rate为最大请求速率(如每分钟一个请求)limit_req_zone $binary_remote_addr zone=mylimit:1m rate=1r/m;

limit_req是配置在location块、server块、http块中

# 请求限流 zone为上述定义的区域名称 burst为排队大小 nodelay表示不限制单个请求的延迟时间limit_req zone=mylimit burst=10 nodelay;burst作用

漏桶算法是匀速的,如上述的示例rate=1r/m,每分钟就只漏出一个请求,如果一分钟来了很多的请求,就只能处理一个,其他的都抛弃掉。

但是burst的配置可以使用FIFO队列可以将请求缓存起来,只有队列满了才会拒绝新的请求,默认情况下就算进了队列也是按照rate速率来执行的,每分钟执行一个

delay作用

由于排队执行,延迟大大增加,可以使用delay来进行设置,首先nodelay表示没有延迟,在队列里的也是直接就执行

由于没有延时了,导致同一时刻要同时处理漏出来的以及队列中的,那么如何控制并发数呢,可以使用delay来进行精确地配置

limit_req zone=mylimit burst=10 delay=5;

上述配置delay=5表示从队列中的第6个请求开始延时,这样可以控制并发的数量

上一篇: 女销售原来靠这样卖房(楼盘置业顾问提成大概多少)
下一篇: 恶魔总裁的天真老婆,20年侵犯超300名少女,细扒美国体坛最大的性丑闻,我一言难尽