$request_body_file
Переменная $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.