#-e This is a basic VCL configuration file for varnish. See the vcl(7) #man page for details on VCL syntax and semantics. # #Backend definitions # backend default { .host = "192.168.XX.XX"; .port = "80"; } backend bethe { .host = "192.168.XX.XX"; .port = "80"; } sub vcl_recv { if (req.http.host ~ "kvinder.bt.dk$") { set req.backend = bethe; } if (req.request != "GET" && req.request != "HEAD" && req.request != "PUT" && req.request != "POST" && req.request != "TRACE" && req.request != "OPTIONS" && req.request != "DELETE") { /* Non-RFC2616 or CONNECT which is weird. */ return (pipe); } if (req.request != "GET" && req.request != "HEAD") { /* We only deal with GET and HEAD by default */ return (pass); } #do not cache in awstats if (req.url ~ "/awstats") { return (pipe); } #Respect force-reload, and clear cache if (req.http.Cache-Control ~ "no-cache") { purge_url(req.url); return (pass); } #Always cache all images if (req.url ~ "\.(png|gif|jpg|swf)$") { return(lookup); } ##MOC: Do not cache if be_typo_user if (req.http.Authorization || req.http.Cookie ~ ".*be_typo_user=.*") { return (pass); } return (lookup); } sub vcl_fetch { if (req.url ~ "\.(png|gif|jpg|swf)$") { unset obj.http.set-cookie; set obj.http.X-Cacheable = "YES:jpg,gif,jpg ans swf are always cached"; return (deliver); } if (req.http.Cache-Control ~ "no-cache") { set obj.http.X-Cacheable = "NO:Force reload"; return (pass); } #dont cache for typo3 backend users if (req.http.Cookie ~ ".*be_typo_user=.*") { set obj.http.X-Cacheable = "NO:Logged in to TYPO3 Backend"; return (pass); } elsif ( obj.http.Cache-Control ~ "private") { set obj.http.X-Cacheable = "NO:Cache-Control=private"; return (pass); } elsif ( obj.ttl < 1s ) { # Here we override the default setting of the cache control headers, we force caching set obj.ttl = 60s; set obj.grace = 60s; set obj.http.X-Cacheable = "YES:FORCED for 60s"; return (deliver); } else { set obj.http.X-Cacheable = "YES"; return (deliver); } if (obj.http.Set-Cookie) { return (pass); } return (deliver); }