dynamic_limit_req_status

Директива dynamic_limit_req_status задаёт HTTP-код состояния, возвращаемый клиентам, когда их запросы превышают установленный лимит.

Синтаксисdynamic_limit_req_status code;
По умолчаниюnone
Контекстhttp, server, location, if in location
Аргументы1

Описание

Директива dynamic_limit_req_status является частью модуля NGINX Dynamic Limit Request, который обеспечивает динамическую блокировку IP-адресов, превысивших пороговые значения запросов. Когда для определённого ключа (например, IP-адреса) превышаются заданные ограничения, эта директива позволяет задать собственный HTTP-код состояния, который NGINX вернёт клиентам. Эта возможность важна для управления тем, как клиенты получают обратную связь при применении ограничения по скорости запросов, позволяя им понять, что их запросы не обрабатываются из‑за превышения лимитов.

Эту директиву можно задавать в контекстах HTTP, server или location, а также внутри условных блоков в контексте location. Аргументом директивы должен быть допустимый HTTP-код состояния (обычно в диапазоне 400–599), что позволяет администраторам настраивать способ обработки таких ситуаций. Такая гибкость даёт возможность обеспечить более плавный опыт пользователей, потенциально предоставляя клиентам сообщения об ошибках, соответствующие логике вашего приложения. Без корректного кода состояния клиенты могут не понять, почему их запросы были отклонены или отложены, что может привести к разочарованию и путанице.

Важно правильно настроить эту директиву совместно с другими параметрами, такими как dynamic_limit_req_zone и dynamic_limit_req, поскольку они совместно определяют правила обработки запросов и ведения логов. При неправильной конфигурации это может привести к неоптимальному поведению или ухудшению пользовательского опыта при превышении клиентами лимитов запросов.

Пример конфига

http {
    dynamic_limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    dynamic_limit_req_status 429;
}

server {
    location / {
        dynamic_limit_req zone=one burst=5 nodelay;
    }
}

Убедитесь, что код состояния находится в допустимом диапазоне HTTP (400-599), чтобы избежать неожиданных ошибок.

Учтите, что использование кода состояния, например 200, может ввести в заблуждение, так как он подразумевает успех, даже если превышены ограничения.

Объединение нескольких директив для ограничения запросов может привести к непредвиденному поведению, если они настроены неправильно.

← Ко всем директивам