Apache-2.2

如何設置 Varnish 只記憶體靜態內容?

  • July 1, 2015

我想將 Varnish 設置為 Apache 的反向代理記憶體。

如何設置 Varnish 以便 Varnish 提供所有靜態數據(jpeg、jpg、png、gif、ico、js、css、txt、pdf、gz、zip、lzma、bz2、tgz、tbz、webp、html、htm)和一個動態頁面應該交給Apache)

到目前為止,我看到的唯一建議是將所有靜態內容與動態內容放在不同的位置(例如子域)的一些變化。這看起來很奇怪,甚至很荒謬。不管怎樣,這不是一個真正的選擇。

這樣的事情會有幫助嗎?

if (req.url ~ “\.(jpeg|jpg|png|gif|ico|webp|js|css|txt|pdf|gz|zip|lzma|bz2|tgz|tbz|html|htm)$”) {
return (lookup);
} else {
return (pass);
}

基本上你可以通過擴展攔截 Varnish 內容:

sub vcl_recv {
 //...
 if (req.url ~ "(?i)\.(jpeg|jpg|png|gif|ico|webp|js|css|txt|pdf|gz|zip|lzma|bz2|tgz|tbz|html|htm)$") {
     unset req.http.Cookie;
     return (lookup);
 } else {
     return (pass);
 }
 //...
}

// ..

sub vcl_fetch {
 //...
 if (req.url ~ "(?i)\.(jpeg|jpg|png|gif|ico|webp|js|css|txt|pdf|gz|zip|lzma|bz2|tgz|tbz|html|htm)$") {
     unset beresp.http.set-cookie;
 }
 //...
}

請記住,您必須從靜態內容中刪除 cookie。

快速Google搜尋發現以下解決方案:

您最好的選擇是將您的靜態內容移動到具有不同 IP 的新域。然後你就可以在那裡呼叫它

這是整個文章的連結:https ://www.varnish-cache.org/forum/topic/56

基本上,您會將 Varnish 伺服器指向靜態內容,讓 Apache 指向動態內容 IP。

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