多個來源的 Varnish 快取/代理

多個來源的 Varnish 快取/代理

我們使用的是 Varnish 3.0.3。

該網站提供來自兩個網域的圖像。與網站網域具有相同 URL 的映像會成功快取並透過 Varnish 提供服務。來自不同域的圖像將被忽略。我們希望所有圖像都透過 Varnish 傳遞,無論它們來自何處。

我已經嘗試過這兩種方法。這是兩個非常簡單的 Varnish 配置。這兩種配置都有效,但來自第二個域的圖像會被 Varnish 忽略。當我觀察瀏覽器的活動時,它直接向第二個網域發出請求來獲取這些圖像,而不是由 Varnish 傳遞。

後端擁有兩個域的所有影像。該網站僅被編碼為檢索具有兩個不同域的圖像。我無法更改網站的程式碼以使用一個網域。

如果我們的網站從 Flickr 帳戶中提取圖像或從 CDN 中提取圖像,則會出現類似的情況。是否可以使用 Varnish 快取並提供這些圖像?我知道我們會指定另一個後端,但在我的測試中,除了 Varnish 提供的主網域之外,我無法獲得任何其他內容。

背後的目的是作為區域邊緣位置。 Varnish 伺服器應該提供所有內容,而不是訪客從不同的來源/網域提取內容。

1.

backend  default {
.host = "192.168.1.1";
.port = "http";
}

sub vcl_recv {
if (req.url ~ "\.(gif|jpg|jpeg|png)$") {
unset req.http.cookie;
unset req.http.Accept-Encoding;
unset req.http.Vary;
set req.backend = default;
return(lookup);
}
}

sub vcl_fetch {
set beresp.ttl = 24h;
set beresp.grace = 23h;
}

2.

backend  default {
.host = "192.168.1.1";
.port = "http";
}

sub vcl_recv {
#Primary domain of site
if (req.http.host == "www.domain.com") {
set req.backend = default;
return (lookup);
#Domain where images are stored
} elsif (req.http.host == "www.domain2.com") {
set req.backend = default;
return (lookup);
}
}

sub vcl_fetch {
set beresp.ttl = 24h;
set beresp.grace = 23h;
}

相關內容