Nginx ― это веб-сервер, который можно использовать как сервер для раздачи статического контента, почтовый-сервер
или обратный прокси-сервер. Nginx считается самым высокопроизводительным.
У nginx есть один главный и несколько рабочих процессов. Основная задача главного процесса —
чтение и проверка конфигурации и управление рабочими процессами. Рабочие процессы выполняют
фактическую обработку запросов. Количество рабочих процессов задаётся в конфигурационном
файле и может быть фиксированным для данной конфигурации или автоматически устанавливаться
равным числу доступных процессорных ядер
Настраивается это с помощью дирректив limit_req_zone и limit_req модуля ngx_http_limit_req_module. Если указать rate=1000r/m, то nginx берет 1 миннут (60 секунд) и делит ее на 1000 запросов и тем самым получаем
60 секунд * 1000 милисекнд / 1000 запросов = 60 милисекунд на 1 запрос, тем самым nginx может обрабатывать запросы только пришедшие с частотностью 1 запрос в 60 милисекнд
остальные запросы будут отбиваться по ошибке. Для разрешения этого ограничения можно добавить параметр burst=x, который позволяет обрабатывать всплески запросов равные количеству x. Запросы которые превысили значение x будут работать также что и без burst,
то есть отдавать ошибки при превышении частотности запросов. Для того чтобы запросы все таки проходили нужно добавить параметр delay=y, который позволит при всплеске запросов x+y запросы x обработать сразу, а запросы y поставить
в очередь и обрабатывать с интервалом 60 секунд * 1000 милисекнд / 1000 запросов = 60 милисекунд. Причем если nginx не получает в какие-нибудь из 60 мс запроса, то будет постепенно накапливать счетчик burst/delay, который потом позволит обработать всплеск равный накопленному.