eval_subrequest_in_memory

Директива `eval_subrequest_in_memory` определяет, сохраняется ли ответ выполненного подзапроса в памяти или передаётся клиенту по мере поступления.

Синтаксисeval_subrequest_in_memory on | off;
По умолчаниюoff
Контекстhttp, server, location
Аргументыflag

Описание

Директива eval_subrequest_in_memory используется в конфигурации сервера NGINX для обработки подзапросов при использовании evaluate module. При значении 'on' она инструктирует NGINX сохранить содержимое ответа подзапроса полностью в памяти, чтобы оно было доступно для последующей обработки в рамках того же запроса. Это особенно полезно, когда необходимо изменять ответы или условно отображать их в зависимости от результатов подзапроса.

Когда директива установлена в 'off', NGINX не будет сохранять весь ответ в памяти. Вместо этого данные будут передаваться клиенту по частям по мере их получения. Такое поведение может снизить использование памяти, но ограничит операции, которые можно выполнить над данными подзапроса перед их отправкой клиенту.

Директива применяется в HTTP-контекстах, включая global, server и location конфигурации, что позволяет гибко контролировать обработку ответов на основе конкретных маршрутов или условий. Флаг определяется как тип integer, допускающий бинарные значения (0 или 1), указывающие, включено ли поведение с хранением в памяти.

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

location /example {
    eval_subrequest_in_memory on;
    eval $result {
        proxy_pass http://backend;
    }
    if ($result ~ 'some_condition') {
        return 200 'Success';
    }
    return 404 'Not Found';
}

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

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

Установка этой директивы в 'on' при недостатке памяти на сервере может привести к значительному ухудшению производительности из-за увеличенного потребления памяти.

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