在nginx中可为不同域名配置独立proxy_cache缓存空间:需在http块定义多个proxy_cache_path并命名,server块中用proxy_cache指定对应名称,配合proxy_cache_key含$host确保键隔离,并通过响应头和缓存目录验证生效。

在 Nginx 中,为不同域名配置独立的 proxy_cache 缓存空间是完全可行的,关键在于将 proxy_cache_path 和 proxy_cache 指令合理作用于 server 级别,并配合 proxy_cache_key 的精准控制。默认情况下,Nginx 的缓存路径是全局定义的,但通过命名隔离 + key 定制,可实现逻辑上完全独立的缓存域。
为每个域名定义专属 cache_path
虽然 proxy_cache_path 必须出现在 http 块中(不能直接写在 server 里),但你可以为每个域名分配唯一的缓存路径和名称:
- 在
http块中分别声明多个带不同 name 的缓存路径,例如:
proxy_cache_path /var/cache/nginx/site_a levels=1:2 keys_zone=site_a:10m max_size=1g; proxy_cache_path /var/cache/nginx/site_b levels=1:2 keys_zone=site_b:10m max_size=1g;
每个 keys_zone=xxx 名称就是后续引用的缓存标识符,互不干扰。
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
在 server 块中绑定对应 cache 名称
每个 server 块内使用 proxy_cache site_a 或 proxy_cache site_b,即可将该虚拟主机所有代理请求路由到指定缓存区:
- 确保
proxy_cache_valid、proxy_cache_use_stale等也放在对应 server 内,避免继承全局配置 - 启用缓存需同时配置
proxy_cache+proxy_cache_valid,缺一不可
用 proxy_cache_key 隔离缓存键(推荐增强)
即使缓存区已分离,仍建议显式设置 proxy_cache_key,加入 $host 或自定义变量,防止相同 URI 在不同域名下误命中:
- 例如:
proxy_cache_key "$host$request_uri$is_args$args"; - 这样
example.com/a和test.com/a会生成完全不同的缓存 key - 尤其在泛解析或多租户场景下,这步能彻底避免跨站缓存污染
验证与调试技巧
确认是否生效,可通过以下方式快速验证:
- 检查响应头是否含
X-Cache: HIT或MISS(需自行添加add_header X-Cache $upstream_cache_status;) - 查看对应缓存目录文件数:
find /var/cache/nginx/site_a -type f | wc -l - 用
nginx -t校验配置语法,reload 后观察 error.log 是否有 cache 相关报错










