echo_read_request_body

Директива `echo_read_request_body` считывает и делает доступными данные тела запроса в указанном контексте `location`.

Синтаксисecho_read_request_body;
По умолчаниюnone
Контекстlocation, if in location
Аргументыnone

Описание

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

Директива должна располагаться внутри блока location или if, где ожидается чтение тела запроса. При активации она не принимает дополнительных аргументов, то есть использует простой синтаксис. Её основная функция — подготовить тело запроса для доступа через переменную $echo_request_body, которая представляет собой всё содержимое тела, прочитанное из входящего запроса. Возможность считывать и использовать тело запроса критически важна при работе с API или формами, отправляемыми через HTTP-методы, которые помещают данные в тело запроса.

Один из возможных сценариев использования echo_read_request_body — это ситуации, когда необходимо выполнить операции, такие как валидация, логирование или иная обработка содержимого тела, не передавая его напрямую другому приложению или конечной точке. Это помогает отделить обработку запроса от бэкенд-системы, которая обычно обрабатывает такие данные, упрощая роль NGINX как обратного прокси или балансировщика нагрузки.

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

location /submit {
    echo_read_request_body;
    echo "Received: $echo_request_body";
}

Убедитесь, что вы используете правильный HTTP-метод, который предполагает наличие body, например POST, поскольку GET и HEAD-запросы обычно не содержат body.

Проверьте, что размер body не превышает настроенные ограничения в NGINX, иначе чтение body может завершиться без сообщений об ошибке.

Расположение directive имеет значение: она не должна быть неправильно вложена в контексты, которые не поддерживают чтение request body.

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