我想设置Varnish作为Apache的反向代理caching。
如何设置Varnish以使Varnish能够提供所有静态数据(jpeg,jpg,png,gif,ico,js,css,txt,pdf,gz,zip,lzma,bz2,tgz,tbz,webp,html,htm)和一个dynamic的页面应该交给Apache)
到目前为止,我所看到的唯一build议是将所有静态内容放在不同的位置(如子域)与dynamic内容的一些变化。 这似乎很奇怪,甚至是荒谬的。 无论如何,这不是一个真正的select。
会有这样的帮助吗?
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); }
基本上可以通过扩展来拦截光油内容:
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。
快速谷歌search发现以下解决scheme:
你最好的select是将你的静态内容移动到一个不同IP的新域。 那么你可以在那里调用它
以下是整个post的链接: https : //www.varnish-cache.org/forum/topic/56
基本上你会把你的Varnish服务器指向静态内容,让Apache指向dynamic内容IP。