Nginx 无原生 purger 参数及后台清理线程;缓存清理仅分被动过期(由 proxy_cache_valid、inactive 等控制)和主动清除(需 ngx_cache_purge 模块配合 PURGE 请求)。

Nginx 没有原生的 purger 参数,也不存在所谓“高效缓存后台清理线程”这一机制。
这是常见的误解。Nginx 的缓存失效(清理)行为分为两类:
-
被动过期(passive expiration):由
proxy_cache_valid、inactive、上游Cache-Control等控制,Nginx 在访问时检查并按需淘汰; -
主动清除(active purge):必须依赖第三方模块
ngx_cache_purge,通过显式发送PURGE请求触发,不是后台线程,也不可配置为“自动后台运行”。
⚠️ 关键事实澄清:
- Nginx 官方不提供
purger配置项,proxy_cache_path中的purger on/off、purger_threshold、purger_sleep等参数完全不存在; - 所有声称“启用 purger 启动后台清理线程”的文档或博客,要么混淆了其他代理软件(如 Varnish),要么误读了非官方补丁或定制分支;
-
inactive=60m是缓存项在无访问时被自动删除的时间窗口,但它由 worker 进程在处理请求时顺带扫描清理,并非独立线程,也不实时、不可控、不保证及时。
✅ 正确做法是:
- 若需“立刻清理”,必须用
ngx_cache_purge模块 +PURGE请求; - 若需“定期清理陈旧缓存”,应靠
inactive和max_size配合磁盘空间水位自动回收; - 若需“按业务事件精准清理”,必须在发布/更新后调用
/purge/xxx接口,由外部系统驱动。
所以,不存在通过某个参数开启后台 purger 线程的操作——这不是 Nginx 的设计模型,也不符合其事件驱动、无状态 worker 的架构本质。

















