<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-priority:99;
mso-style-link:"Balloon Text Char";
margin:0in;
margin-bottom:.0001pt;
font-size:8.0pt;
font-family:"Tahoma","sans-serif";}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
span.BalloonTextChar
{mso-style-name:"Balloon Text Char";
mso-style-priority:99;
mso-style-link:"Balloon Text";
font-family:"Tahoma","sans-serif";}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>I am running Apache2 mod.fcgid with Varnish 3 as a cache. I am getting around 50% cache misses. I would appreciate any help or hints on what I am doing wrong with my default.vcl. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><img width=497 height=304 id="Picture_x0020_1" src="cid:image001.png@01CE654F.08FF1680" alt="cid:image001.png@01CE654D.EC949250"><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Here is my default.vcl <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'># This is a basic VCL configuration file for varnish. See the vcl(7)<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'># man page for details on VCL syntax and semantics.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>#<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'># TODO: Update internal subnet ACL and security.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'># Define the internal network subnet.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'># These are used below to allow internal access to certain files while not<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'># allowing access from the public internet.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'># acl internal {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'># "192.10.0.0"/24;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'># }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'># Default backend definition. Set this to point to your content<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'># server.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>#<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>backend default {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>.host = "127.0.0.1";<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>.port = "8080";<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>.connect_timeout = 600s;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>.first_byte_timeout = 600s;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>.between_bytes_timeout = 600s;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>.max_connections = 800;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>}<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'>acl purge {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> "localhost";<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> "127.0.0.1";<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>}<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'># Respond to incoming requests.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>sub vcl_recv {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # Use anonymous, cached pages if all backends are down.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> if (!req.backend.healthy) {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> unset req.http.Cookie;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # Allow the backend to serve up stale content if it is responding slowly.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set req.grace = 6h;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> if (req.restarts == 0) {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> if (req.http.X-Forwarded-For) {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> } else {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set req.http.X-Forwarded-For = client.ip;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>}<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'># Check the incoming request type is "PURGE", not "GET" or "POST"<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>if (req.request == "PURGE") {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # Check if the ip coresponds with the acl purge<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> if (!client.ip ~ purge) {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # Return error code 405 (Forbidden) when not<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> error 405 "Not allowed.";<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> return (lookup);<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>}<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # Pipe these paths directly to Apache for streaming.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> #if (req.url ~ "^/admin/content/backup_migrate/export") {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # return (pipe);<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> #}<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> #req.url ~ "^.*/api/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # Do not cache these paths.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> if (req.url ~ "^/status\.php$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^/update\.php$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^/admin$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^/admin/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in;text-indent:.5in'>req.url ~ "^.*/apidev/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^/flag/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/munin/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/server-status/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/store_us/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/store_us_test/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/store_ca/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/store_uk/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/store_de/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/store_fr/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/store_it/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/store_cn/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/store_es/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/store_jp/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/ajax/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/dev.serviidb.com/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/user/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/cacti/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/admin/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/install/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/serviioweb/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/mediabrowser/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/phpmyadmin/.*$" ||<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> req.url ~ "^.*/xataface/.*$") {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> return (pass);<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'> # Do not allow outside access to cron.php or install.php.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> #if (req.url ~ "^/(cron|install)\.php$" && !client.ip ~ internal) {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # Have Varnish throw the error directly.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # error 404 "Page not found.";<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # Use a custom error page that you've defined in Drupal at the path "404".<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # set req.url = "/404";<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> #}<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'> # Always cache the following file types for all users. This list of extensions<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # appears twice, once here and again in vcl_fetch so make sure you edit both<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # and keep them equal.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> if (req.url ~ "(?i)\.(pdf|asc|dat|txt|doc|xls|ppt|tgz|csv|png|gif|jpeg|jpg|ico|swf|css|js)(\?.*)?$") {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> unset req.http.Cookie;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'> # Remove all cookies that Drupal doesn't need to know about. We explicitly <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # list the ones that Drupal does need, the SESS and NO_CACHE. If, after <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # running this code we find that either of these two cookies remains, we <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # will pass as the page cannot be cached.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> if (req.http.Cookie) {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # 1. Append a semi-colon to the front of the cookie string.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # 2. Remove all spaces that appear after semi-colons.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # 3. Match the cookies we want to keep, adding the space we removed <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # previously back. (\1) is first matching group in the regsuball.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # 4. Remove all other cookies, identifying them by the fact that they have<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # no space after the preceding semi-colon.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # 5. Remove all spaces and semi-colons from the beginning and end of the <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # cookie string. <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set req.http.Cookie = ";" + req.http.Cookie;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set req.http.Cookie = regsuball(req.http.Cookie, "; +", ";"); <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set req.http.Cookie = regsuball(req.http.Cookie, ";(SESS[a-z0-9]+|SSESS[a-z0-9]+|NO_CACHE)=", "; \1=");<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set req.http.Cookie = regsuball(req.http.Cookie, ";[^ ][^;]*", "");<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set req.http.Cookie = regsuball(req.http.Cookie, "^[; ]+|[; ]+$", "");<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'> if (req.http.Cookie == "") {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # If there are no remaining cookies, remove the cookie header. If there<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # aren't any cookie headers, Varnish's default behavior will be to cache<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # the page.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> unset req.http.Cookie;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> else {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # If there is any cookies left (a session or NO_CACHE cookie), do not<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # cache the page. Pass it on to Apache directly.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> return (pass);<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'>}<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'># Set a header to track a cache HIT/MISS.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>sub vcl_deliver {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> if (obj.hits > 0) {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set resp.http.X-Varnish-Cache = "HIT";<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> else {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set resp.http.X-Varnish-Cache = "MISS";<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>}<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'># Code determining what to do when serving items from the Apache servers.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'># beresp == Back-end response from the web server.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>sub vcl_fetch {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # We need this to cache 404s, 301s, 500s. Otherwise, depending on backend but <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # definitely in Drupal's case these responses are not cacheable by default.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> if (beresp.status == 404 || beresp.status == 301 || beresp.status == 500) {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set beresp.ttl = 10m;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # this section of code sets the API to return a response code of 200 not 302. DO NOT MODIFY OR DELETE COULD MESS UP CLIENTS.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> if(beresp.status == 302 && !beresp.http.Location){<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set beresp.status = 200; <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set beresp.response = "OK";<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'> # Don't allow static files to set cookies. <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # (?i) denotes case insensitive in PCRE (perl compatible regular expressions).<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # This list of extensions appears twice, once here and again in vcl_recv so <o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # make sure you edit both and keep them equal.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> if (req.url ~ "(?i)\.(pdf|asc|dat|txt|doc|xls|ppt|tgz|csv|png|gif|jpeg|jpg|ico|swf|css|js)(\?.*)?$") {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> unset beresp.http.set-cookie;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'> # Allow items to be stale if needed.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set beresp.grace = 6h;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>}<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'>sub vcl_hit {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> if (req.request == "PURGE") {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> purge;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> error 200 "Purged.";<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>}<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'>sub vcl_miss {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> if (req.request == "PURGE") {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> purge;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> error 200 "Purged.";<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>}<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'># In the event of an error, show friendlier messages.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>sub vcl_error {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # Redirect to some other URL in the case of a homepage failure.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> #if (req.url ~ "^/?$") {<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # set obj.status = 302;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> # set obj.http.Location = "<a href="http://backup.example.com/">http://backup.example.com/</a>";<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> #}<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'> # Otherwise redirect to the homepage, which will likely be in the cache.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> set obj.http.Content-Type = "text/html; charset=utf-8";<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> synthetic {"<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><html><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><head><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> <title>Page Unavailable</title><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> <style><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> body { background: #303030; text-align: center; color: white; }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> #page { border: 1px solid #CCC; width: 500px; margin: 100px auto 0; padding: 30px; background: #323232; }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> a, a:link, a:visited { color: #CCC; }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> .error { color: #222; }<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> </style><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'></head><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><body onload="setTimeout(function() { window.location = '/' }, 5000)"><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> <div id="page"><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> <h1 class="title">Page Unavailable</h1><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> <p>The page you requested is temporarily unavailable.</p><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> <p>We're redirecting you to the <a href="/">homepage</a> in 5 seconds.</p><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> <div class="error">(Error "} + obj.status + " " + obj.response + {")</div><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> </div><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'></body><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'></html><o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>"};<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'> return (deliver);<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>}<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Requests.log<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/api/media.json?client=ServiiDroid&num=0 miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/api/plugin.json?client=ServiiDroid&num=0 miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/hulu.png miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/comedycentral.jpg miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/CBS_0.jpg miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/abc_iview.jpg miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/4OD-logo.jpg miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sl/taxonomy/term/116/all miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ru/node/317?language=de miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sl/taxonomy/term/130/all miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/plugin-api-name/youtubetop100 miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/da/content/abc-iview-australia?language=en miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sl/taxonomy/term/130/all miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ru/content/haha-sport-baseball?language=de miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/?q=node/add miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/plugin-api-name/youtubetop100 miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/node/add miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/user/register miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/user/register miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ja/comment/7?language=ja miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/itv.jpg miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/syfy.jpg miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sl/taxonomy/term/130/all miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/coco.jpg miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/css/css_fUXc0IbfJFVGhZ_CC63oYAw5rSt49epRhzcGmscaISU.css hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/css/css_SKdZ0BB5XafXDbZJFEkdKM2wno6BIT2kaNm5ZvTeTgA.css miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/css/css_KhS183x7gviqG0CuFRJJAOmVB1hHNwf9ofpIxQ9WMmE.css hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/eclp_3.png hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/all/modules/addtoany/images/share_save_171_16.png hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/css/css_5_EBsvYf_U3gqgv1Idal1sImw7zcXB1kaIR6NOugp8o.css hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/bbciplayer.png miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/misc/feed.png hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/castalba.jpg miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/skysportsplus.png miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/hahasport.png miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/coolsporttv.png miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/sopcast.jpg miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/stopstream_0.png miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ar/ar/content/data/view/api_access?client_op=contains&client=&page=16 miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/dailymotion.jpg miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/twitch.png miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/Ustream.jpg miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/vimeo.jpg miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/YouTube.jpg miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/canalplus.jpg miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sites/default/files/m6groupe.png miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/plugin-api-name/youtubetop100 miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/zh-hans/node/199?language=en miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/zh-hans/node/863?language=en miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/api/install?client=ServiiDroid&nid=175.0 miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sl/content/pilgrims-death miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/content/how-cook-heston?language=ru miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/plugin-api-name/youtubetop100 miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sl/node/239 miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/da/edit-plugin miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/plugin-api-name/youtubetop100 miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/api/install?client=ServiiDroid&nid=771.0 miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/es/media-type/video?language=en miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/es/media-type/video?language=en miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/plugin-api-name/youtubetop100 miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/unpublished-forum miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/robots.txt hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/ hit<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/unpublished-forum miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/content/pokemon miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/content/conan-celebrity-interviews?language=es miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/sl/region/uk?language=en miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/unpublished-forum miss<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>/batch?op=start&id=1516 miss<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>