Назад | Перейти на главную страницу

Каково определение пакета в настройке Nginx limit_req?

В чем разница между этим:

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

Документация http://wiki.nginx.org/HttpLimitReqModule.

Как говорится о взрыве http://nginx.org/en/docs/http/ngx_http_limit_req_module.html

Чрезмерные запросы задерживаются до тех пор, пока их количество не превысит максимальный размер пакета.

Это означает, что в вашем случае первые 5 запросов «игнорируются», и учитываются только запросы 6 и выше. Таким образом, по запросу 35 достигается предел 30. Затем на запрос 36 в течение той же 1 секунды, исходящий из того же источника, nginx отправит ответ 503 вместо того, чтобы обрабатывать запрос дальше.

Пакетный сигнал означает, что он будет отложен на следующую секунду, если будет больше 30 запросов в секунду, тогда nginx отправит код ошибки 503.

Burst работает как очередь

В твоем случае:

разрешить не более 30 запросов в секунду в среднем с пакетами не более 5 запросов.

Ссылка: http://nginx.org/en/docs/http/ngx_http_limit_req_module.html