清理Nginx临时缓存文件需先调优缓冲配置以减少生成,再定时安全清理闲置文件,最后通过日志与监控闭环验证效果。

清理 Nginx 磁盘上遗留的临时缓存文件,核心不是“一删了事”,而是先控制生成、再安全清理。临时文件(如 client_temp、proxy_temp、fastcgi_temp)通常由缓冲区不足或超时中断导致,Nginx 不会自动删除失败请求留下的残留文件,需主动干预。
识别哪些 temp 目录需要关注
先确认你的配置中启用了哪些临时路径:
-
client_body_temp_path:大文件上传时,超出client_body_buffer_size的部分落盘 -
proxy_temp_path:反向代理响应过大或客户端接收慢时,超出内存缓冲的响应体写入此处 -
fastcgi_temp_path:类似 proxy_temp,用于 FastCGI 场景
这些路径在 nginx.conf 中显式定义,未配置则使用默认值(如 /var/cache/nginx/client_temp)。可通过 nginx -T | grep temp_path 快速定位。
减少临时文件生成才是根本
多数遗留文件源于缓冲配置与业务不匹配。针对性调优能大幅降低落盘频率:
- 增大
proxy_buffer_size(建议 32k–128k),应对大响应头(如含 JWT、长 Cookie) - 调整
proxy_buffers总容量,例如8 256k(共 2MB),匹配 P95 响应体大小 - 设
proxy_busy_buffers_size为总 buffer 的 1/2~2/3,且 ≤ 总量 - 检查
proxy_max_temp_file_size是否过小(默认 1G),避免大响应被拆成大量小文件 - 对纯 API 或流式接口,可考虑关闭
proxy_buffering off,彻底绕过 temp 落盘
安全清理已存在的闲置临时文件
Nginx 不管理已写入但未完成的 temp 文件,需定时清除:
- 用
find按修改时间清理,例如:find /var/cache/nginx/proxy_temp -type f -mmin +30 -delete - 建议每 10–15 分钟执行一次,避免堆积;可写入 cron 或 systemd timer
- 不要直接
rm -rf整个 temp 目录,Nginx 工作进程可能正持有文件句柄,强制删除会导致磁盘空间不释放 - 清理前确保
nginx -t配置正常,避免 reload 时因路径异常引发问题
配合监控与日志验证效果
光清理不够,要闭环验证:
- 开启
error_log的 warn 级别,关注 “upstream sent too big header” 或 “an upstream response is buffered to a temporary file” 类提示 - 监控
proxy_temp所在磁盘的 inodes 和空间使用率,突增往往意味着缓冲配置失效 - 清理后观察 Nginx worker 进程的 I/O wait 和磁盘写入速率是否回落











