$request_body_file

Переменная $request_body_file содержит путь к временному файлу, в котором хранится тело запроса, когда оно слишком велико, чтобы поместиться в память. — NGINX Core (HTTP)

$request_body_file NGINX Core (HTTP)

Описание

Переменная $request_body_file используется в случаях, когда тело HTTP-запроса превышает ограничения размера буфера NGINX. При поступлении запроса NGINX считывает тело запроса; если тело больше заранее заданного размера, оно сохраняется во временный файл на файловой системе сервера. Эта переменная затем содержит путь к этому временному файлу, что позволяет далее обрабатывать тело запроса. Переменная преимущественно устанавливается во время этапа обработки запроса, в частности, когда любой из основных обработчиков, таких как модули proxy или fastcgi, решает, что тело запроса не следует полностью держать в памяти. Типичными значениями этой переменной будут пути к файлам в файловой системе, такие как `/tmp/nginx_request_body_XXXXXX`. Временный файл обычно удаляется после завершения обработки запроса, что позволяет эффективно управлять дисковым пространством сервера. В конфигурациях, где часто обрабатываются большие полезные нагрузки (например, загрузки файлов), правильная настройка обработки тела запроса, включая размеры буферов, критически важна для обеспечения оптимальной производительности и во избежание перегрузки сервера.

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

server {
    client_max_body_size 10M;
    location /upload {
        proxy_pass http://backend;
        proxy_request_buffering on;
        # Accessing the request body file:
        if ($request_body_file) {
            log_format custom '$remote_addr $request_body_file';
            access_log /var/log/nginx/custom.log custom;
        }
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location

Убедитесь, что client_max_body_size установлена правильно для эффективного использования $request_body_file; в противном случае большие запросы будут отклонены.

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

Не все модули корректно обрабатывают временный файл; тщательно проверьте совместимость при сочетании с различными модулями NGINX.