nginx temp目录用于暂存临时数据,需按需控制并安全清理:优化缓冲配置减少落盘,用find命令定期删除闲置文件,配合监控告警防止磁盘占满。

nginx 的 temp 目录(如 /var/cache/nginx/client_temp、proxy_temp、fastcgi_temp 等)用于暂存客户端请求体、反向代理缓存、FastCGI 响应等临时数据。若长期不清理,可能占满磁盘或影响性能。关键不是“定期删”,而是“按需控 + 安全清”。
理解 temp 目录的生成逻辑
这些目录只在特定配置启用且实际触发时才写入文件:
-
client_body_temp_path:仅当
client_body_buffer_size不足且client_max_body_size允许大上传时,才会把超出缓冲区的请求体落盘; -
proxy_temp_path / fastcgi_temp_path:仅当响应体超过
proxy_buffer_size或fastcgi_buffer_size,且启用了proxy_buffering on(默认)时,才缓存到磁盘; - 所有 temp 文件由 nginx 工作进程创建,通常以随机名命名,生命周期由 nginx 自动管理——请求结束、超时或连接中断时自动清理。
优先优化配置,减少落盘频率
多数临时文件堆积源于缓冲配置不合理或业务场景未适配。调整以下参数可大幅降低 temp 目录压力:
- 增大
client_body_buffer_size(如设为128k),避免小文件上传频繁落盘; - 调高
proxy_buffers(如8 128k)和proxy_buffer_size(如128k),让反向代理尽量内存缓存; - 确认
proxy_max_temp_file_size是否过小(默认 1G),若后端返回大响应但该值太低,会强制拆分写入大量小 temp 文件; - 对纯 API 服务(无大响应/上传),可考虑关闭
proxy_buffering off,直接流式转发,彻底绕过 proxy_temp。
安全清理 temp 目录的实操方法
手动清理前务必确认 nginx 正在运行且无活跃长连接(如 WebSocket、SSE)。不建议直接 rm -rf 整个目录,推荐分步操作:
- 先检查哪些 temp 目录被实际使用:
nginx -t -c /etc/nginx/nginx.conf查看配置中定义的路径; - 用
lsof +D /var/cache/nginx/proxy_temp检查是否有文件正被 nginx 进程占用(正常情况下应极少或没有); - 清理空闲文件:
find /var/cache/nginx/proxy_temp -type f -mmin +60 -delete(删除 60 分钟以上未访问的文件); - 定期执行(如每日凌晨)可写入 cron:
0 3 * * * find /var/cache/nginx/{client_temp,proxy_temp,fastcgi_temp} -type f -mmin +120 -delete 2>/dev/null; - 注意:不要删除目录本身或子目录结构,只删文件;nginx 启动时会自动重建所需子目录。
监控与告警建议
temp 目录不应成为“黑盒”。建议加入基础监控:
- 用
du -sh /var/cache/nginx/*_temp统计各目录大小,设置阈值(如 >500MB 触发告警); - 结合
logrotate或自定义脚本,记录每周 temp 目录增长趋势; - 若发现
client_temp持续增长,大概率是上传接口未限制大小或前端未分片,需协同开发排查; - 观察 nginx error log 中是否频繁出现
no space left on device或open() "/var/cache/nginx/... failed (24: Too many open files)",这往往指向 temp 目录所在分区 inode 耗尽或磁盘满。










