Мы недавно перешли на nginx, и я был рад видеть, что ограничение скорости кажется достаточно простым.Я установил следующий предел для конкретной зоны:
limit_req_zone $binary_remote_addr zone=PHPUtilities:10m rate=60r/m;
Я применил эту зону к блоку местоположения с взрывом 20. Это все выглядело хорошо, но я был удивленчтобы увидеть, что я быстро получу замедления, когда сервер будет отказываться отвечать в течение 5 секунд или около того.Кажется, что nginx принимает 60 запросов в минуту и делит их на 1 запрос в секунду.Поэтому, если бы мы загрузили несколько сценариев одновременно, nginx сразу же обработал бы первый запрос, а затем задержал остальные.
Я бы предпочел, чтобы он вел себя примерно так: «Хорошо, они получают 60 бесплатных запросов в минуту. Только после того, как они достигнут 60, мы начнем ограничивать их, сначала замедляя следующие 20 запросов (пакет). Все после этого будет срываться, пока они не перестанут запрашивать так много, или не упадет ниже предела 60 в минуту."
Есть ли способ сделать это?