写点什么

Nginx 配置限流

作者:拾光师
  • 2023-11-29
    北京
  • 本文字数:549 字

    阅读完需:约 2 分钟

Nginx 配置限流

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


limit_req_zone 是配置在 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 个请求开始延时,这样可以控制并发的数量


用户头像

拾光师

关注

还未添加个人签名 2022-10-08 加入

个人博客-> https://zhhll.icu

评论

发布
暂无评论
Nginx配置限流_拾光师_InfoQ写作社区