limit_req_status

Директива `limit_req_status` задаёт HTTP-код состояния, возвращаемый клиентам, когда запрос отклоняется из-за ограничения скорости. — NGINX HTTP Core

limit_req_status
httpserverlocation
Синтаксисlimit_req_status code;
По умолчаниюnone
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1

Описание

Директива `limit_req_status` является частью модуля NGINX HTTP Core и используется совместно с механизмами ограничения скорости, реализованными директивой `limit_req`. Когда клиент превышает допустимую частоту запросов, в ответ на отклонённые механизмом ограничения запросов обращения возвращается указанный HTTP-код состояния. Это позволяет отправлять пользовательское сообщение, например 503 Service Unavailable, чтобы уведомить клиента о применённом ограничении вместо простого отказа в обработке его запросов. Эта директива принимает один аргумент: требуемый HTTP-код состояния, который будет отправлен в ответе при превышении лимитов запросов. Пользователи могут указать любой допустимый HTTP-код состояния, что обеспечивает гибкость в зависимости от требований их приложения. Чаще всего используются коды 503 (недоступность сервиса) или 429 (слишком много запросов). Важно отметить, что директива влияет только на те запросы, которые не обрабатываются из-за ограничений, и не затрагивает успешно обработанные запросы, находящиеся в пределах лимитов. Как директива конфигурации она может быть определена на уровнях контекстов `http`, `server` или `location`, что даёт возможность применять разные коды состояния в зависимости от области приложения. Разработчикам следует убедиться, что указанный код состояния согласуется с логикой обработки ошибок их приложения и ожиданиями пользователей при применении ограничения скорости.

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

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

server {
    location / {
        limit_req zone=one;
        limit_req_status 503;
    }
}

Использование недопустимого кода состояния может привести к непредсказуемому поведению или ошибкам в клиентских приложениях.

Если `limit_req` настроен неправильно, клиенты могут не получать заданный статус, поскольку директива не действует без активного ограничения скорости.