清理nginx缓存需区分主动缓存(proxy_cache/fastcgi_cache)与临时文件(client_temp/proxy_temp等):前者需精准purge或清空指定zone目录,后者应调优缓冲参数并定期清理闲置文件,严禁直接rm -rf整个cache目录。

清理 Nginx 运行中产生的临时缓存与代理文件,核心不是“一删了之”,而是分清两类不同路径、不同机制的文件:一类是 proxy_cache / fastcgi_cache 等主动缓存文件(你配了才存,长期驻留);另一类是 client_temp、proxy_temp、fastcgi_temp 等运行时临时文件(按需生成,通常自动清理,但可能堆积)。处理方式完全不同。
先确认哪些目录该清、哪些不该乱动
执行以下命令快速定位真实路径:
sudo nginx -T 2>&1 | grep -E "(proxy_cache_path|fastcgi_cache_path|client_body_temp_path|proxy_temp_path|fastcgi_temp_path)"
重点关注输出中的实际路径,例如:
-
/var/cache/nginx→ 通常是 proxy_cache 或 fastcgi_cache 的根目录(可手动清) -
/var/cache/nginx/client_temp→ 客户端上传体落盘目录(属 temp 类,应自动清理) -
/var/cache/nginx/proxy_temp→ 反向代理响应缓冲落盘目录(也属 temp 类)
⚠️ 切勿直接 rm -rf /var/cache/nginx/* —— 若多个 cache zone 共用同一父目录,会误删其他站点缓存。
清理主动缓存文件(proxy_cache / fastcgi_cache)
这类缓存由配置显式启用,文件长期存在,需主动干预:
-
精准清除单个 URL 缓存:启用
ngx_cache_purge模块后,在 location 中配置 purge 规则,用curl -X PURGE http://domain.com/path触发,安全且可控 -
批量清空某个 cache zone:先查清该 zone 对应的物理路径(如
proxy_cache_path /data/nginx_cache levels=1:2 keys_zone=myapi:10m;→ 路径是/data/nginx_cache),再执行sudo rm -rf /data/nginx_cache/* -
禁用缓存再 reload:在对应 location 加
proxy_cache off;或fastcgi_cache off;,reload 后新请求不再写入,旧文件仍占磁盘,需配合手动删目录
处理 temp 类临时文件(client_temp / proxy_temp / fastcgi_temp)
这些目录不用于长期缓存,只在缓冲区不足时暂存数据,生命周期由 Nginx 自动管理。堆积往往说明配置不合理:
-
优先调优缓冲参数:增大
client_body_buffer_size(如128k)、proxy_buffer_size和proxy_buffers(如8 128k),减少落盘频次 -
检查是否误启了无用落盘:若业务纯 API、无大文件上传/响应,可设
proxy_buffering off;彻底绕过proxy_temp -
必要时安全清理闲置文件:用 find 清理 1 小时未访问的 temp 文件:
sudo find /var/cache/nginx/{client,proxy,fastcgi}_temp -type f -mmin +60 -delete
日常运维建议
避免救火式清理:
- 为
proxy_cache_path设置max_size和inactive,让 Nginx 后台自动淘汰过期缓存 - 给 temp 目录所在分区预留至少 15% 空间,并配置磁盘使用率告警(如 >85% 触发通知)
- 宝塔用户可在【计划任务】中添加定时脚本,仅清指定 cache 目录,不碰 temp 子目录











