loop_detect_status

Директива `loop_detect_status` настраивает код состояния HTTP, возвращаемый, когда запрос превышает допустимый предел циклов в NGINX.

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

Описание

Директива loop_detect_status является частью модуля ngx_http_loop_detect_module, который позволяет NGINX обнаруживать и предотвращать циклы запросов при работе с заголовками CDN. Указав эту директиву, пользователи могут задать собственный код состояния HTTP, который NGINX вернёт, когда будет превышено допустимое число циклов запросов (устанавливаемое директивой loop_detect_max_allow_loops). Этот код состояния должен находиться в диапазоне кодов ошибок клиента и сервера, то есть между 400 и 599.

Когда модуль включён через директиву loop_detect, он отслеживает входящие запросы на наличие заголовка CDN-Loop, который указывает путь, пройденный HTTP-запросом через разные CDN. Если счётчик циклов входящего запроса превысит настроенный максимум, NGINX ответит указанным в loop_detect_status кодом состояния HTTP. Это позволяет разработчикам и системным администраторам корректно управлять ситуациями с циклами и соответствующим образом информировать клиентов о состоянии их запросов.

Важно выбрать код состояния, который имеет смысл в контексте вашего приложения; например, 508 (Loop Detected) обычно используется в случаях обнаружения бесконечного цикла и поэтому является подходящим выбором здесь. Принятие соответствующего кода состояния не только помогает разработчикам при отладке, но и эффективнее сообщает клиентам о характере ошибки.

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

location / {
    loop_detect on;
    loop_detect_cdn_id my_cdn_id;
    loop_detect_status 508;
    loop_detect_max_allow_loops 10;
    proxy_set_header CDN-Loop $loop_detect_proxy_add_cdn_loop;
    proxy_pass http://example.upstream.com;
}

Убедитесь, что код состояния находится в диапазоне от 400 до 599; в противном случае NGINX отклонит конфигурацию.

Использование кода состояния, который не передаёт клиентам правильную информацию о проблеме, может привести к недоразумениям.

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