手动清除Nginx静态资源缓存需区分proxy_cache、fastcgi_cache及浏览器/CDN缓存;一、清空整个proxy_cache磁盘缓存:查路径后stop→rm -rf→重启;二、精准清除单条缓存:启用ngx_cache_purge模块并配置purge location,用curl PURGE触发;三、清fastcgi_cache:查路径后直接rm -rf对应目录。

手动清除 Nginx 中静态资源缓存,核心是区分“缓存类型”和“清除方式”:静态资源若走的是 proxy_cache(比如反向代理后端静态服务),就按代理缓存清理;若直接由 Nginx 通过 root/alias 提供文件且启用了 expires 或 add_header Cache-Control,那它本身不落磁盘缓存,浏览器或 CDN 缓存才是重点——但你问的是“Nginx 中的缓存”,默认指 proxy_cache 或 fastcgi_cache 这类服务端缓存。
下面分三类常见场景,给出可立即执行的手动清除方法:
一、清空整个 proxy_cache 磁盘缓存(最彻底)
适用于发布大版本、确认所有缓存需重置,或无法精准定位 URL 的情况。
- 先查真实缓存路径:
sudo nginx -T 2>&1 | grep proxy_cache_path
输出类似:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=static_cache:20m max_size=500m;→ 实际路径是/var/cache/nginx - 安全清空(停写 + 删除 + 重载):
sudo nginx -s stop # 暂停写入,避免删到临时文件 sudo rm -rf /var/cache/nginx/* sudo nginx # 重启,重建索引(reload 不清磁盘)
⚠️ 注意:若多个
keys_zone共用同一父目录(如都用/var/cache/nginx),此操作会一并清除全部缓存 zone。
二、精准清除某条静态资源缓存(推荐日常使用)
前提:已编译并启用 ngx_cache_purge 模块(宝塔 OpenResty 默认支持)。
- 确认模块存在:
nginx -V 2>&1 | grep -o ngx_cache_purge
- 在对应
server块中添加 purge location(static_cache需与proxy_cache_path的keys_zone名一致):location ~ ^/purge(/.*)$ { allow 127.0.0.1; allow 10.10.5.0/24; # 替换为你的运维内网段 deny all; proxy_cache_purge static_cache $scheme$host$1$is_args$args; } - 清除单个资源(如
/css/app.css):curl -X PURGE http://localhost/purge/css/app.css
返回
200表示命中并移除了元数据,下次请求即回源(秒级生效)。
三、清 FastCGI 缓存(如 PHP 生成的静态 HTML)proxy_cache 和 fastcgi_cache 互不干扰,必须单独处理:
- 查 fastcgi 缓存路径(通常在
fastcgi_cache_path指令中):sudo nginx -T 2>&1 | grep fastcgi_cache_path
- 直接删对应目录(无需停 Nginx):
sudo rm -rf /path/to/fastcgi_cache/*
或配合脚本定期清理(如
find /path/to/fastcgi_cache -mmin +60 -delete)。
不复杂但容易忽略:nginx -s reload 只重载配置,不会清任何缓存;systemctl restart nginx 也不删磁盘文件,只是新 worker 进程不再读旧缓存元数据——真正删文件,还得靠 rm -rf 或 purge。


















