Varnish快取如何處理不同的網域?

Varnish快取如何處理不同的網域?

我剛開始閱讀有關 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 變數加入到哈希中,而是忽略它。

答案1

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

清漆常見問題/HowDoI

我的網站有很多主機名,如何防止它們增加快取?

您可以透過標準化所有主機名稱的「Host」標頭來做到這一點。這是一個 VCL 範例:

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

答案2

我的虛擬機器上有 3 個網域,我正在使用 Nginx 和 Varnish,目前我處於預生產配置中,我正在做的事情是:

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

如果網域需要 Varnish,我將使用 Nginx:80 作為代理,如果不需要,我使用 FastCGI 東西。在這個例子中,非 Varnish 網站不受 Varnish 的影響。它看起來很愚蠢,但很有效;-)並且我的客戶沒有一個抱怨(但是...)。

相關內容