Cache
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 變數添加到雜湊中,而是忽略它。
您可以將其配置為這樣做。預設情況下,它不會(也不應該)。
我有一個包含許多主機名的站點,如何防止它們增加記憶體?
您可以通過規範化所有主機名的“主機”標頭來做到這一點。這是一個 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 關注。它看起來很愚蠢,但它可以;-)而且我的客戶都沒有抱怨(但是……)。