Setup Varnish for Wordpress

From Brian Nelson Ramblings
Revision as of 03:58, 19 January 2014 by Brian (Talk | contribs) (Created page with "==Setup Varnish with Wordpress== You can follow the guide to install varnish Click Here Below is a basic default.vcl for use with wordpress. backe...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Setup Varnish with Wordpress

You can follow the guide to install varnish Click Here

Below is a basic default.vcl for use with wordpress.

backend default {
    .host = "127.0.0.1";
    .port = "81";
}

sub vcl_recv {
  if (req.http.Accept-Encoding) {
#revisit this list
   if (req.url ~ "\.(gif|jpg|jpeg|swf|flv|mp3|mp4|pdf|ico|png|gz|tgz|bz2)(\?.*|)$") {
     remove req.http.Accept-Encoding;
   } elsif (req.http.Accept-Encoding ~ "gzip") {
     set req.http.Accept-Encoding = "gzip";
   } elsif (req.http.Accept-Encoding ~ "deflate") {
     set req.http.Accept-Encoding = "deflate";
   } else {
     remove req.http.Accept-Encoding;
   }
 }
 if (req.url ~ "\.(gif|jpg|jpeg|swf|css|js|flv|mp3|mp4|pdf|ico|png)(\?.*|)$") {
   unset req.http.cookie;
   set req.url = regsub(req.url, "\?.*$", "");
 }
 if (req.url ~ “\?(utm_(campaign|medium|source|term)|adParams|client|cx|eid|fbid|feed|ref(id|src)?|v(er|iew))=”) {
   set req.url = regsub(req.url, “\?.*$”, “”);
 }
 if (req.http.cookie) {
   if (req.http.cookie ~ "(wordpress_|wp-settings-)") {
     return(pass);
   } else {
     unset req.http.cookie;
   }
  }
} 

sub vcl_fetch {
  if (req.url ~ "wp-(login|admin)" || req.url ~ "preview=true" || req.url ~ "xmlrpc.php") {
    return (hit_for_pass);
  }
  if ( (!(req.url ~ "(wp-(login|admin)|login)")) || (req.request == "GET") ) {
    unset beresp.http.set-cookie;
  }
  if (req.url ~ "\.(gif|jpg|jpeg|swf|css|js|flv|mp3|mp4|pdf|ico|png)(\?.*|)$") {
    set beresp.ttl = 365d;
  }
} 

sub vcl_deliver {
# multi-server webfarm? set a variable here so you can check
# the headers to see which frontend served the request
#   set resp.http.X-Server = "server-01";
   if (obj.hits > 0) {
     set resp.http.X-Cache = "HIT";
   } else {
     set resp.http.X-Cache = "MISS";
   }
}