这有什么区别:
limit_req_zone $binary_remote_addr zone=flood:10m rate=30r/s;
limit_req zone=flood nodelay
和:
limit_req_zone $binary_remote_addr zone=flood:10m rate=30r/s;
limit_req zone=flood burst=5 nodelay
答案1
就你的情况而言:
平均每秒最多允许 30 个请求,突发事件不超过 5 个请求。
参考:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
答案2
正如它所说的那样http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
过多的请求将被延迟,直到其数量超过最大突发大小
这意味着,在您的情况下,前 5 个请求将被“忽略”,并且只计算第 6 个及以上的请求。因此,在请求 35 时,将达到 30 的限制。然后,在来自同一来源的同一 1 秒内的请求 36 时,nginx 将发送 503 响应,而不是进一步处理该请求。
答案3
突发意味着将会延迟下一秒,如果每秒有超过 30 个请求,那么 nginx 将发送 503 错误代码。
Burst 的工作原理与队列类似