$request_body
Переменная $request_body содержит необработанное тело запроса клиента. — NGINX Core (HTTP)
Описание
Переменная $request_body в NGINX захватывает тело запроса клиента после его обработки сервером. Она в основном заполняется, когда метод запроса обычно содержит тело, например POST или PUT. Эта переменная доступна только если обработка тела запроса 'set' или 'get' включена в конфигурации сервера, обычно через директиву proxy_pass или если клиент отправляет данные непосредственно на сервер. После установки она содержит все данные, отправленные клиентом, что делает её полезной для обработки форм, загрузки файлов или любых полезных нагрузок, отправленных в запросах. При использовании переменной $request_body важно учитывать, что тело запроса буферизуется. По умолчанию оно может быть ограничено директивой client_max_body_size, которая ограничивает размер тела, обрабатываемого и в конечном итоге сохраняемого в этой переменной. Если тело превышает этот лимит, запрос может быть отклонён, и переменная не будет содержать данные. Типичные значения для $request_body могут включать данные в формате JSON, multipart form data или простой текст, в зависимости от типа содержимого и намерения клиента.
Пример конфига
server {
listen 80;
server_name example.com;
location /submit {
# Capture the request body
proxy_pass http://backend;
proxy_set_header X-Request-Body $request_body;
}
}Подсистема
httpКэшируется
ДаКонтексты
http, server, location, ifУбедитесь, что client_max_body_size установлено правильно, чтобы избежать ситуации, когда большие тела запросов отбрасываются.
Помните, что $request_body доступен только для методов, которые поддерживают тело запроса, например POST и PUT.
Если вы используете постобработку в последующем location-блоке, убедитесь, что предыдущие location-блоки не потребляют тело запроса, если вы планируете обратиться к нему позже.