具有多个站点/盒子的清漆

具有多个站点/盒子的清漆

Varnish 是否可以根据 URL 将流量重定向到不同的 IP?

例如,以下设置是否可行(如果可行,VCL 会是什么样子):

  1. *.example.com 指向 Varnish IP 地址
  2. 当请求foo.example.com,varnish 检查缓存并将请求发送到服务器1缓存未命中时的 IP 地址。
  3. 当请求bar.example.com,varnish 检查缓存并将请求发送到服务器2缓存未命中时的 IP 地址。

foo 和 bar 是(大部分情况下)完全不相关的网站。它们使用引擎,但内容不同,并且拥有自己独特的数据库。由于之前这样做没有任何惩罚(除了成本),我们将它们分成两个单独的框,以便大量流量流向不会对访客的浏览产生负面影响酒吧

我可以设置两个 varnish 实例,让一个实例提供 foo 的静态内容,另一个提供 bar 的静态内容,但由于运行 Varnish 似乎没有太多的开销,所以我认为(也许是错误的)使用一个 Varnish 服务器在缓存未命中时将流量重定向到适当的框会更有意义。

答案1

是的。首先尝试在 default.vcl 中定义您的后端:

backend foo {
  .host = "1.2.3.4"; # IP of foo backend
  .port = "80";
}

backend bar {
  .host = "1.2.3.6"; # IP of bar backend
  .port = "80";
}

并在 vcl_recv() 代码中使用类似于:

 if (req.http.host ~ "foo.example.com") {
        set req.backend = foo;
 }else{
        set req.backend = bar;
 }

有很好的文档(对于这样的例子来说已经足够好了;))http://www.varnish-cache.org/docs/2.1/您还可以使用 VCL 做更多的事情。这真的很酷。

相关内容