在Nginx中可为不同域名配置独立proxy_cache缓存空间:需在http块定义多个proxy_cache_path并命名,server块中用proxy_cache指定对应名称,配合proxy_cache_key含$host确保键隔离,并通过响应头和缓存目录验证生效。
在 Nginx 中,为不同域名配置独立的
缓存空间是完全可行的,关键在于将
和
指令合理作用于 server 级别,并配合
的精准控制。默认情况下,Nginx 的缓存路径是全局定义的,但通过命名隔离 + key 定制,可实现逻辑上完全独立的缓存域。
为每个域名定义专属 cache_path
虽然
必须出现在 http 块中(不能直接写在 server 里),但你可以为每个域名分配唯一的缓存路径和名称:
在
块中分别声明多个带不同
name
的缓存路径,例如:
每个
名称就是后续引用的缓存标识符,互不干扰。
在 server 块中绑定对应 cache 名称
每个
块内使用
或
,即可将该虚拟主机所有代理请求路由到指定缓存区:
Nginx
在宝塔面板中轻松管理Nginx高性能Web服务器。提供可视化配置反向代理、负载均衡、SSL证书及HTTP缓存功能,一键优化高并发性能,助您高效搭建稳定、快速的网站运行环境。
下载
确保
、
等也放在对应 server 内,避免继承全局配置
启用缓存需同时配置
+
,缺一不可
用
proxy
_cache_key 隔离缓存键(推荐增强)
即使缓存区已分离,仍建议显式设置
,加入
或自定义变量,防止相同 URI 在不同域名下误命中:
例如:
这样
和
会生成完全不同的缓存 key
尤其在泛解析或多租户场景下,这步能彻底避免跨站缓存污染
验证与调试技巧
确认是否生效,可通过以下方式快速验证:
检查响应头是否含
或
(需自行添加
)
查看对应缓存目录文件数:
用
校验配置语法,reload 后观察 error.log 是否有 cache 相关报错
proxy_cacheproxy_cache_pathproxy_cacheproxy_cache_keyproxy_cache_pathhttpproxy_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=xxxserverproxy_cache site_aproxy_cache site_bproxy_cache_validproxy_cache_use_staleproxy_cacheproxy_cache_validproxy_cache_key$hostproxy_cache_key "$host$request_uri$is_args$args";example.com/atest.com/aX-Cache: HITMISSadd_header X-Cache $upstream_cache_status;find /var/cache/nginx/site_a -type f | wc -lnginx -t