backend nginx { .host = "127.0.0.1"; .port = "8081"; } acl purge { "localhost"; "127.0.0.1"; "YOUR v4-IP"; "YOUR v6-IP"; } sub vcl_recv { if (req.http.X-Varnish-Nuke == "1" && client.ip ~ purge && req.backend.healthy) { set req.hash_always_miss = true; } if (req.http.Accept-Encoding) { if (req.http.Accept-Encoding ~ "gzip") { # If the browser supports it, we'll use gzip. set req.http.Accept-Encoding = "gzip"; } else if (req.http.Accept-Encoding ~ "deflate") { # Next, try deflate if it is supported. set req.http.Accept-Encoding = "deflate"; } else { # Unknown algorithm. Remove it and send unencoded. unset req.http.Accept-Encoding; } } if (req.url ~ "^(/serendipity_admin.php|/serendipity_admin_image_selector.php|/comment.php|/plugin/captcha|/delete/).*") { return (pass); } if ((!(req.url ~ "^(/serendipity_admin.php|/serendipity_admin_image_selector.php|/delete/).*")) || (req.url ~ ".*\.(css|js|png|jpg|gif|ico|woff|eot)$") ){ unset req.http.cookie; } set req.grace = 1h; } sub vcl_fetch { if (beresp.status >= 500) { # don't ask BE for 60s for a HTTP500 object set beresp.saintmode = 60s; return(restart); } if (!(req.url ~ "^(/serendipity_admin.php|/comment.php|/plugin/captcha|/delete/).*")) { unset beresp.http.set-cookie; unset beresp.http.expires; unset beresp.http.cache-control; unset beresp.http.pragma; set beresp.ttl = 3598s; }else{ set beresp.ttl = 0s; } if (req.url ~ ".*\.(css|js|png|jpg|gif|ico|woff|eot)$" ) { set beresp.ttl = 1382400s; set beresp.http.Cache-Control = "max-age=315360000, public"; unset beresp.http.set-cookie; } set beresp.grace = 1h; } sub vcl_deliver { remove resp.http.Server; remove resp.http.X-Powered-By; remove resp.http.Via; remove resp.http.X-Varnish; remove resp.http.X-Blog; remove resp.http.X-Session-Reinit; }