eval_override_content_type

Директива `eval_override_content_type` позволяет указать пользовательский тип содержимого для ответа выполненного подзапроса.

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

Описание

Директива eval_override_content_type используется вместе с модулем NGINX eval и особенно полезна при обработке подзапросов, которые возвращают содержимое. Эта директива позволяет вручную задать заголовок Content-Type для ответа, сформированного из вычисленной переменной. По умолчанию ответы наследуют заголовок Content-Type от исходного запроса или подзапроса; однако в ситуациях, когда возвращаемое содержимое отличается или требует особой обработки, эта директива даёт возможность явно управлять Content-Type, обеспечивая корректную интерпретацию ответа клиентами.

Чтобы использовать эту директиву, укажите один аргумент, задающий требуемый тип содержимого, например 'text/plain' или 'application/json'. Она может располагаться в контекстах HTTP, server или location и необходима тогда, когда обычная обработка ответа не присваивает подходящий тип. Поскольку директива допускает инъекцию содержимого в локациях, обрабатывающих динамическое содержимое, она эффективно работает в сценариях, где типы ответов меняются в зависимости от обработки на бэкенде или логики приложения.

При внедрении этой директивы следует внимательно учитывать ожидаемый вывод вычисленной переменной; указанный тип содержимого должен соответствовать формату этого вывода, иначе клиенты могут неверно интерпретировать данные.

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

location /example {
    eval_override_content_type application/json;
    eval $data {
        backend_response;
    }
    if ($data ~ '"key": "value"') {
        add_header X-Custom-Header 'Found value';
    }
}

Убедитесь, что указанный тип содержимого соответствует фактическому возвращаемому содержимому; в противном случае клиенты могут неверно интерпретировать ответ.

Неправильная конфигурация может привести к непредвиденному поведению, особенно если она сочетается с другими директивами обработки содержимого, такими как proxy_set_header.

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

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