max_size是proxy_cache_path中设定缓存软性容量上限的参数,通过后台LRU清理超inactive时间的缓存项来间接控制磁盘占用,需配合合理inactive值、use_temp_path=off及监控告警使用。

max_size 是 proxy_cache_path 指令中的关键参数,用于设定缓存目录在磁盘上的**软性容量上限**,但它不是“保险丝”,不能单靠它防止磁盘爆满。
max_size 的作用机制
它不实时拦截写入,而是在 Nginx 后台扫描(默认每 0.5 秒一次)时,对超过 inactive 时间未被访问的缓存项启动 LRU 清理,直到实际占用回落到 max_size 以内。如果 inactive 设置过大或为 0,即使磁盘已满,活跃缓存也不会被清理,max_size 就形同虚设。
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
合理设置 max_size 的要点
- 按实际挂载磁盘空间预留 10%–15%:例如专用缓存盘 200GB,max_size 设为 180g 更稳妥,留出元数据和突发写入余量
- 必须配合 inactive 使用:静态资源(JS/CSS/图片)建议 inactive=1h–24h;API 响应类缓存建议 inactive=5m–30m
- 避免设成 0 或省略 inactive:否则 Nginx 不主动淘汰,max_size 失效
- 单位支持 g/m/k,大小写不敏感,如
max_size=10g、max_size=10240m
防止绕过 max_size 的关键配置
临时文件会绕过 max_size 管控,必须控制好:
- 启用
use_temp_path=off(Nginx ≥ 1.7.12),让响应直写缓存目录,跳过 proxy_temp_path 中转 - 若必须用 temp 路径,确保
proxy_temp_path和proxy_cache_path不在同一个磁盘分区,尤其避开根分区 - 剥离无意义 URL 参数(如
?v=123、&t=xxx),避免生成海量唯一 key 导致缓存无法去重
必须搭配的运维动作
max_size 是策略值,不是真实水位线:
- 用
du -sh /var/cache/nginx或 Prometheus + nginx-exporter 每分钟采集真实磁盘用量 - 告警阈值设为 max_size × 0.8,而非 100%,给人工干预留出窗口
- 当使用率持续 >90% 或淘汰速率突增 3 倍以上,自动触发限流或清理脚本

















