limit_req_dry_run
Директива limit_req_dry_run позволяет тестировать ограничение частоты запросов без фактического применения. — NGINX HTTP Core
Описание
Директива limit_req_dry_run специально разработана для упрощения разработки и тестирования конфигураций ограничения частоты запросов в NGINX. При включении она фактически моделирует эффект ограничения частоты запросов, обрабатывая запросы без применения реальных ограничений. Это особенно полезно в ситуациях, когда администраторы хотят наблюдать, сколько запросов было бы обработано и потенциально отклонено из‑за превышения лимитов, не влияя на рабочий трафик. Эта директива принимает бинарный аргумент — либо on, либо off. При установке в on NGINX выполняет проверки ограничения частоты запросов в соответствии с другими директивами, такими как limit_req_zone, но не отклоняет запросы на основании этих лимитов. Вместо этого в логах будет отмечено, были ли превышения. Это позволяет тонко настраивать параметры ограничения частоты запросов и убеждаться, что всё работает как предсказано перед полноценным развёртыванием. Директива чувствительна к контексту и может быть сконфигурирована внутри блоков http, server или location в конфигурациях NGINX. Используя limit_req_dry_run, администраторы могут собирать данные о поведении и шаблонах запросов, что помогает эффективно определить подходящие лимиты частоты, которые следует применить после отключения директивы. Однако важно помнить, что при включённом режиме тестирования фактическое ограничение частоты запросов не будет действовать, что может привести к незамеченным всплескам трафика, если лимиты будут установлены слишком высоко после начала принудительного применения.
Пример конфига
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location / {
limit_req zone=one;
limit_req_dry_run on;
}
}
}Использование limit_req_dry_run в рабочем окружении без тщательного обдумывания может привести к тому, что неожиданно большой объём трафика будет пропущен и не будет отслеживаться.
Обязательно отключите dry run mode перед окончательным развертыванием, чтобы обеспечить соблюдение лимитов скорости и избежать перегрузки трафика.