$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 模块结合使用时,请再次确认兼容性。