点“全清nginx缓存”后页面仍旧,因该按钮仅清理proxy_cache默认路径,不清理fastcgi_cache、自定义proxy_cache路径或opcache;需手动清/fastcgi_cache目录、重启php或调用opcache_reset()。

为什么点“全清Nginx缓存”后页面还是旧的?
宝塔面板的「全清Nginx缓存」按钮只清 /www/server/nginx/proxy_cache_dir 或默认 proxy_cache_path 目录下的文件,但如果你实际用的是 fastcgi_cache(比如 WordPress 首页缓存)、proxy_cache 自定义路径、或 PHP 层的 OPcache,这个按钮完全不生效。
- 检查你启用了哪种缓存:在站点配置里搜
fastcgi_cache或proxy_cache;若没找到,可能是用了插件(如 WP Super Cache)或 PHP OPcache -
fastcgi_cache的缓存目录通常是/www/server/nginx/cache,和 proxy_cache 路径不同,必须单独清理 - OPcache 不走 Nginx 文件系统,得重启 PHP 服务或调用
opcache_reset()
如何确认并清理 fastcgi_cache 缓存?
fastcgi_cache 是 PHP 动态页提速最常用的方式,但它的缓存不会被宝塔「全清」按钮覆盖,且容易因配置错位导致始终 BYPASS。
- 先查缓存区名:打开站点配置文件,找
fastcgi_cache phpcache;中的phpcache—— 这就是 keys_zone 名,对应缓存路径里的目录名 - 确认缓存路径是否存在且可写:
ls -ld /www/server/nginx/cache,权限应属www:www,否则缓存写不进、清也白清 - 手动清空命令:
rm -rf /www/server/nginx/cache/*(注意不是proxy_cache_dir) - 验证是否生效:访问页面时看响应头是否有
X-FastCGI-Cache: HIT,而不是BYPASS或空
用 /purge/ 清指定 URL 缓存,但返回 403 或 404?
这是 ngx_cache_purge 模块启用失败的典型表现。宝塔默认 OpenResty 版本虽含该模块,但需两处手动配置才能对外可用。
- 检查模块是否加载:
nginx -V 2>&1 | grep -o ngx_cache_purge,无输出说明未启用(需重编译或换支持版本) - location 配置必须放在
server块内,且allow仅限本地:allow 127.0.0.1;后不能漏deny all;,否则直接 403 -
proxy_cache_purge cache_one $1$is_args$args;中的cache_one必须和proxy_cache_path的keys_zone=cache_one完全一致,大小写敏感 - 触发方式是
GET /purge/xxx,不是POST,且路径要严格匹配缓存 key(例如缓存了https://a.com/,就得请求/purge/,不是/purge)
清理后仍看到旧内容,别急着重试——先看这三处
缓存刷新失败,80% 是因为「你以为清了,其实根本没进缓存」或「被其他层拦住了」。
- 浏览器本地缓存还在:开无痕窗口或加
curl -I http://域名看原始响应头,排除Cache-Control: max-age=3600类头干扰 - CDN 层没清:宝塔清的是源站 Nginx,Cloudflare、腾讯云 CDN、又拍云等都得单独登录控制台清,
/purge/对它们无效 - 后端程序自己发了禁用头:WordPress 默认给首页加
Cache-Control: no-cache,Nginx 尊重它,除非你加了fastcgi_ignore_headers Cache-Control
真正彻底的清理,从来不是点一下按钮的事;它是层层穿透的过程,漏掉任何一层,你看到的就还是旧的。











