Apache 的 mod_proxy 本身不缓存,真正实现缓存的是 mod_cache 与 mod_cache_disk 协同工作;必须按序启用 mod_proxy、mod_proxy_http、mod_cache、mod_cache_disk 及 mod_headers 模块,CacheEnable 路径须匹配原始 URL(如 /static/),缓存目录需可写且空间充足,后端响应头必须含 Cache-Control: public, max-age=N 才能生效。
apache 的 mod_proxy 本身不缓存,它只负责转发请求;真正实现缓存加速的是 mod_cache 和它的存储后端(如 mod_cache_disk)。配置的关键是让 proxy 和 cache 协同工作——proxy 把请求打到后端,cache 把返回内容落地并复用。
必须启用的核心模块
缺一不可,顺序也不能错:
-
mod_proxy和mod_proxy_http:处理反向代理转发 -
mod_cache:缓存调度框架(必须在 disk 模块之前加载) -
mod_cache_disk:把 JS/CSS/图片等响应写入磁盘并复用 -
mod_headers或mod_expires:补全或覆盖后端不规范的缓存头
缓存路径要匹配原始 URL
Apache 缓存只认自己收到的路径,不是后端真实路径。例如:
- 你写了
ProxyPass /static/ http://127.0.0.1:8080/assets/ - 那缓存指令必须是
CacheEnable disk /static/,不能写/assets/ - 避免用
CacheEnable disk /全局开启——容易误缓存/api/这类动态接口
缓存目录要可写且稳定
缓存文件得能真正落盘,否则全是 MISS:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
- 指定目录如
CacheRoot "/var/cache/apache2/mod_cache_disk" - 执行
chown www-data:www-data /var/cache/apache2/mod_cache_disk(Debian/Ubuntu) - 剩余空间建议 ≥5GB,因为 mod_cache_disk 不自动清理过期文件
- 禁止放在
/tmp、NFS、Samba 或杀毒软件高频扫描路径
响应头决定缓存是否生效
Apache 默认很保守,以下条件不满足就跳过缓存:
- 后端必须返回
Cache-Control: public, max-age=31536000(Java 默认不返回,需手动加) - 含
Set-Cookie头?加CacheIgnoreHeaders Set-Cookie显式忽略 - 无
Last-Modified?加CacheIgnoreNoLastMod On(Webpack 打包产物常见) - 用
Header set Cache-Control "public, immutable"强制补全头,更可靠
验证是否真缓存成功
别只看配置,用实际请求确认:
- 发起两次相同请求,观察响应头是否有
X-Cache: HIT - 检查缓存目录下是否生成了对应文件(如
/var/cache/apache2/mod_cache_disk/xx/xxx) - 查看 Apache 错误日志,留意
Permission denied或cache not enabled类报错

















