Cache
與多個站點/框清漆
Varnish 是否可以根據 url 將流量重定向到不同的 IP?
例如,以下設置是否可行(如果可行,VCL 會是什麼樣子):
- *.example.com 指向 Varnish IP 地址
- 當向foo.example.com發出請求時,varnish 檢查記憶體並在記憶體未命中時將請求發送到Server1的 IP 地址。
- 當向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 做更多的事情。真的很酷。