limit_req_zone $variable zone=name:size rate=rate [burst=number [nodelay]]; $variable:用于区分请求的变量,如 $binary_remote_addr(客户端 IP 地址的二进制形式)。 zone=name:size:定义一个存储会话状态的内存区域,name 是内存区域的名称,size 是该区域的大小。 rate=rate:允许的请求速率,单位是 r/s...
nodelay参数允许请求在排队的时候就立即被处理,也就是说只要请求能够进入burst队列,就会立即被后台worker处理,请注意,这意味着 burst 设置了 nodelay 时,系统瞬间的 QPS 可能会超过 rate 设置的阈值。nodelay 参数要跟 burst 一起使用才有作用。 延续实例二的配置,我们加入 nodelay 选项: limit_req_zone $binary_re...
而且,为了尽量防止zone空间被消耗空,NGINX每次创建新的状态信息时,会尝试删除几个前60秒内没有被使用的空间。 参数rate定义了最终要控制的速率。可以按秒为单位比如10r/s也可以按分钟为单位比如600r/m进行配置。最终NGINX会把所有的参数统一为按秒为单位。所以10r/s和600r/m效果是一样的。 在最终的代码实现中,...
2.1 limit_req_zone的参数 zone:one:10m 表示一个内存区域大小为10m,并且设定了名称为one. rate=5r/s 表示请求的速率是1秒5个请求,当单位设置成60r/m时,并不能达到限速1分钟60次的效果,它等同于1r/s。 $binary_remote_addr 表示远程的ip地址,当此nginx前方还存在代理时,需进行处理 2.2 limit_req的参数 ...
第三个参数:rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,还可以有比如30r/m的。 limit_req zone=one burst=5 nodelay; 第一个参数:zone=one 设置使用哪个配置区域来做限制,与上面limit_req_zone 里的name对应。 第二个参数:burst=5,重点说明一下这个配置,burst爆发的意思,这个配置的...