必须借助第三方模块ngx_cache_purge实现精准清理,需编译启用、proxy_cache_key与purge请求uri严格一致、配置带ip限制的/purge location,并通过curl -x purge验证命中与实效。

要让 Nginx 的 proxy_cache 支持按 URL 精准清理,必须借助第三方模块 ngx_cache_purge。它不是 Nginx 自带功能,需手动集成并严格配置匹配逻辑。
确认模块已编译启用
该模块不支持动态加载,只能在 Nginx 编译阶段静态加入:
- 执行
nginx -V 2>&1 | grep -o with-http-cache-purge-module,有输出才表示已启用 - 若无输出,需重新编译 Nginx,添加
--add-module=/path/to/ngx_cache_purge - 推荐使用 OpenResty,它默认集成该模块,省去手动编译步骤
缓存键(proxy_cache_key)与 purge 请求必须完全一致
能否精准删除,90% 取决于 key 字符串是否一字不差:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
- 例如缓存配置为:
proxy_cache_key "$scheme$host$request_uri"; - 对应 purge location 中就必须用相同结构:
proxy_cache_purge mycache "$scheme$host$1$is_args$args"; - 常见失配点:漏掉
$is_args$args、用$uri替代$request_uri、大小写或参数顺序不一致、URL 编码未统一
配置专用 purge location 并限制访问
不能把 purge 接口暴露给公网,必须加 IP 白名单:
- 示例配置:
location ~ ^/purge(/.*) {<br> allow 127.0.0.1;<br> allow 192.168.10.0/24;<br> deny all;<br> proxy_cache_purge mycache "$scheme$host$1$is_args$args";<br>} -
$1捕获/purge/article/123中的/article/123,确保目标路径准确 - 调用方式:
curl -X PURGE http://example.com/purge/article/123
验证清理是否真正生效
不要只看 HTTP 状态码,要检查实际行为:
- 清理前访问目标 URL,响应头应含
X-Proxy-Cache: HIT(或你自定义的缓存状态头) - 执行 PURGE 后再次访问,应变为
MISS,且后端日志可见新请求 - 可查缓存目录下对应哈希路径的文件是否仍在(删除的是共享内存元数据,磁盘文件由 cache manager 异步回收)










