具有多个主机/子域的 Varnish

具有多个主机/子域的 Varnish

我是 Varnish 的新手,我希望它已经可以“开箱即用”地做到这一点,但在考虑在生产中使用它之前,我想澄清一下:

这是我的设置:

  1. 我在同一台机器上运行多个网站,这些网站因子域名而异(即 user1.example.com、user2.example.com 等)
  2. 每个“站点”都有一个同名的个人资料图片(即 user1.example.com/profile.png、user2.example.com/profile.png)

Varnish 会将它们识别为单独的资源并相应地缓存它们吗?或者我需要在 VCL 中更改某些内容以告诉它在查找缓存命中时包含完整的主机 URL?

答案1

它们将被单独缓存。

默认代码vcl_hash控制着这一点:

sub vcl_hash {
    set req.hash += req.url;
    if (req.http.host) {
        set req.hash += req.http.host;
    } else {
        set req.hash += server.ip;
    }
    return (hash);
}

如您所见,如果主机名存在,则将其包含在哈希中,如果不存在,则包含服务器的 IP。

相关内容