Cache

與多個站點/框清漆

  • January 3, 2011

Varnish 是否可以根據 url 將流量重定向到不同的 IP?

例如,以下設置是否可行(如果可行,VCL 會是什麼樣子):

  1. *.example.com 指向 Varnish IP 地址
  2. 當向foo.example.com發出請求時,varnish 檢查記憶體並在記憶體未命中時將請求發送到Server1的 IP 地址。
  3. 當向bar.example.com發出請求時,varnish 檢查記憶體並在記憶體未命中時將請求發送到Server2的 IP 地址。

foo 和 bar(在大多數情況下)是完全不相關的站點。他們使用引擎,但有不同的內容和自己獨特的數據庫。由於以前這樣做沒有任何懲罰(除了成本),我們將它們分成兩個單獨的框,這樣foo的大量流量不會對瀏覽bar的訪問者產生負面影響。

我可以設置兩個 varnish 實例,一個提供 foo 的靜態內容,另一個提供 bar 的,但由於執行 Varnish 似乎沒有太多成本,我認為(可能是錯誤的)它會更有意義與一個 Varnish 伺服器一起使用,該伺服器在記憶體未命中時將流量重定向到適當的框。

是的。嘗試首先在 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 做更多的事情。真的很酷。

引用自:https://serverfault.com/questions/218246