Apache-2.2
如何設置 Varnish 只記憶體靜態內容?
我想將 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。