rewrite_status

Директива `rewrite_status` изменяет код статуса ответа в зависимости от заданных условий.

Синтаксисrewrite_status status [if=condition];
По умолчаниюnone
Контекстhttp, server, location
Аргументы1-2

Описание

Директива rewrite_status позволяет переписать код статуса ответа, возвращаемого сервером. Она может принимать один или два аргумента: код статуса (например, 404, 500 и т.д.) и необязательное условие в форме 'if=condition'. Если указанное условие оценивается как истинное, код статуса ответа будет изменён на заданный код. Эта функция полезна для настройки ответов на основе конкретных критериев, таких как проверка значения заголовка или переменной.

Директива действует в различных контекстах, включая http, server и location. При вызове модуль собирает правила, заданные через директиву rewrite_status, и применяет эти правила на этапе обработки запроса. Если определено несколько правил, они оцениваются в порядке добавления, что гарантирует, что первое совпавшее правило определит окончательный код статуса, возвращаемый клиенту.

Несмотря на свои мощные возможности, разработчикам следует с осторожностью использовать эту директиву, чтобы избежать непреднамерённых переопределений критически важных кодов статуса, которые могут ввести клиентов в заблуждение или повлиять на политику кэширования прокси-серверов или браузеров. Также стоит отметить, что этот модуль в настоящее время считается экспериментальным, что может означать отсутствие всестороннего тестирования или функциональности и потенциальную нестабильность в производственных средах.

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

server {
    listen 127.0.0.1:8080;
    server_name localhost;

    location / {
        rewrite_status 404 if=$http_rsp_404_status;
        proxy_pass http://foo.com;
    }
}

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

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

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

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