Cache

Varnish 記憶體如何處理不同的域?

  • August 14, 2012

我剛開始閱讀有關 Varnish 的內容,並正在考慮將其用作我的網路伺服器的前端。我的網路伺服器上有多個域,當使用相同的查詢字元串時,它們會獲取相同的內容。因此,假設一位客戶訪問:

http://domain1.com/script.php?string1=abc&string2=123

稍後,其他人訪問:

http://domain2.com/script.php?string1=abc&string2=123

Varnish 會記憶體第一次訪問的結果並將其用於第二個客戶端嗎?謝謝!

**編輯:**經過更多閱讀,聽起來以下可能有效:

sub vcl_hash {
   set req.hash += req.url;
   return (hash);
}

因此,它沒有將 http.host 變數添加到雜湊中,而是忽略它。

您可以將其配置為這樣做。預設情況下,它不會(也不應該)。

來自Varnish FAQ/HowDoI

我有一個包含許多主機名的站點,如何防止它們增加記憶體?

您可以通過規範化所有主機名的“主機”標頭來做到這一點。這是一個 VCL 範例:

if (req.http.host ~ "^(www.)?example.com") { set req.http.host = "example.com"; }

我的虛擬機上有 3 個域,我正在使用 Nginx 和 Varnish,目前我正在進行預生產配置,這就是我正在做的事情:

NGINX:80 ==> VARNISH:8080 ==> NGINX:8081

如果域需要 Varnish,我使用 Nginx:80 作為代理,如果不需要,我使用 FastCGI 的東西。在此範例中,非 Varnish 站點不受 Varnish 關注。它看起來很愚蠢,但它可以;-)而且我的客戶都沒有抱怨(但是……)。

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