You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Varnish 4.0实现多域名共享同一缓存

Varnish 4.0 实现多域名同URL共享缓存的配置方案

Varnish默认会将Host请求头纳入缓存哈希计算,所以site1.com/page/和site2.com/page/会生成不同的缓存键,导致重复缓存。要让同URL的请求共享缓存,需要修改vcl_hash子例程,排除Host头,仅基于URL和其他影响内容的关键参数生成哈希。

具体配置修改

在你的VCL配置中添加或覆盖vcl_hash子例程:

sub vcl_hash {
    # 以请求URL作为哈希核心
    hash_data(req.url);
    
    # 加入Accept-Encoding头,确保不同编码格式的请求不共享缓存
    if (req.http.Accept-Encoding) {
        hash_data(req.http.Accept-Encoding);
    }
    
    # 若站点存在用户身份相关的Cookie(如登录态),需加入哈希避免缓存混淆
    # 示例:仅提取SESSIONID相关Cookie片段
    # if (req.http.Cookie ~ "SESSIONID=") {
    #     hash_data(regsub(req.http.Cookie, "^.*?(SESSIONID=[^;]+).*$", "\1"));
    # }
    
    # 不加入Host头,实现多域名同URL请求共享缓存
    return (lookup);
}

关键注意事项

  • 确认后端Nginx不会根据Host头返回差异化内容,否则共享缓存会导致内容错误。
  • 如果站点有用户个性化内容(如登录后显示专属信息),必须将对应的Cookie纳入哈希计算,否则会出现缓存污染(比如游客看到登录用户的内容)。
  • 修改配置后,需要重启Varnish服务使设置生效。

内容的提问来源于stack exchange,提问作者Kash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:45:43