rate_limit_quantity
Задает количество запросов, разрешённых до срабатывания лимита в модуле ограничения скорости на основе Redis.
Описание
Директива rate_limit_quantity указывает порог, при достижении которого запросы должны ограничиваться для конкретного ключа, указанного в конфигурации NGINX. Эта директива особенно полезна при проектировании API или веб-приложений, где определённым клиентам необходимо ограничить количество запросов в заданный промежуток времени. Если число запросов от клиента превысит указанное значение rate_limit_quantity, последующие запросы получат ответ о превышении лимита, обычно с настроенным кодом состояния (например, 429 Too Many Requests).
В контексте модуля ограничения скорости на основе Redis эта директива использует Redis в качестве бэкенда для хранения состояния и истории запросов клиентов. Запросы измеряются в рамках определённого периода, задаваемого параметром period директивы rate_limit. После превышения установленного количества запросов поведение ответов сервера определяется тем, как модуль взаимодействует с базой данных Redis для выдачи соответствующих кодов ошибок или ответов. Кроме того, она может использоваться в сочетании с параметрами burst, чтобы учитывать сценарии, в которых внезапные всплески трафика допустимы до определённого порога, после чего применяются более жёсткие ограничения.
Блоки <location> или <server> позволяют гибко задавать различные ограничения скорости в зависимости от конкретного эндпоинта или конфигурации сервера. Директива обеспечивает детализированный подход к эффективному управлению нагрузкой, одновременно гарантируя справедливую обработку запросов клиентов в рамках установленных ограничений, что повышает общую стабильность и производительность NGINX при работе с множеством клиентов.
Пример конфига
location = /quota {
rate_limit $limit_key requests=15 period=1m burst=20;
rate_limit_quantity 0;
rate_limit_pass redis;
rate_limit_headers on;
}Убедитесь, что Redis правильно настроен и доступен, поскольку ошибки подключения могут привести к непредвиденным отклонениям запросов.
Установка значения rate_limit_quantity в 0 отключает ограничение частоты запросов, что при внесении правок в конфигурацию может быть непреднамеренно пропущено.
Убедитесь, что директива rate_limit указана правильно, так как она задаёт контекст для rate_limit_quantity; в противном случае директива может казаться неэффективной.