В чем разница между этим:
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