This is again with my post I come back to share how I setup a Varnish in sharadchhetri.com network which is hosted in DigitalOcean but this time scenario is different, we do not want a particular URL or domain name should be cached by Varnish.
In this real scenario I have taken our own URL called myip.sharadchhetri.com (with this link you can get information about what is your ip address and your GeoMap location of IP address[ISP point]).
Paste the given below lines in sub vcl_recv section and be careful also it must be pasted inside return(lookup) of sub vcl_recv. Just below given section ,I have shared my default.vcl file.Check from line no. 43 to 46.
Note: replace myip.sharadchhetri.com to your URL.
Edit /etc/varnish/defualt.vcl file and paste the below given line
# dont cache myip.sharadchhetri.com
if (req.http.host ~ "(myip.sharadchhetri.com)") {
return(pass);
}
After pasting the code in default.vcl,restart the varnish
/etc/init.d/varnish restart
How to check,is configuration working or not:
Use the below command from your system(curl must be installed)
curl -I http://your-domain-name.com
The below given is reference from my server
[root@myserver ~]# cat /etc/varnish/default.vcl
backend default {
.host = "127.0.0.1";
.port = "8880";
}
##################################################
sub vcl_recv {
if (req.restarts == 0) {
if (req.http.x-forwarded-for) {
set req.http.X-Forwarded-For =
req.http.X-Forwarded-For + ", " + client.ip;
} else {
set req.http.X-Forwarded-For = client.ip;
}
}
if (req.request == "PURGE") {
if ( client.ip != "192.241.190.251") {
error 405 "Not allowed.";
}
return (lookup);
}
if (req.request != "GET" &&
req.request != "HEAD" &&
req.request != "PUT" &&
req.request != "POST" &&
req.request != "TRACE" &&
req.request != "OPTIONS" &&
req.request != "DELETE") {
return (pipe);
}
if (req.request != "GET" && req.request != "HEAD") {
return (pass);
}
if (!(req.url ~ "wp-(login|admin)") &&
!(req.url ~ "&preview=true" ) ) {
unset req.http.cookie;
}
if (req.http.Authorization || req.http.Cookie) {
return (pass);
}
# dont cache myip.sharadchhetri.com
if (req.http.host ~ "(myip.sharadchhetri.com)") {
return(pass);
}
return (lookup);
}
sub vcl_fetch {
if (!(req.url ~ "wp-(login|admin)")) {
unset beresp.http.set-cookie;
set beresp.ttl = 96h;
}
if (beresp.ttl <= 0s ||
beresp.http.Set-Cookie ||
beresp.http.Vary == "*") {
set beresp.ttl = 120 s;
return (hit_for_pass);
}
return (deliver);
}
sub vcl_hit {
if (req.request == "PURGE") {
purge;
error 200 "Purged.";
}
return (deliver);
}
sub vcl_miss {
if (req.request == "PURGE") {
purge;
error 200 "Purged.";
}
return (fetch);
}
[root@myserver ~]#
Below is reference from my system(See Age:0)
linux@tuxworld:~/Desktop$ curl -I myip.sharadchhetri.com HTTP/1.1 200 OK Server: Apache Content-Type: text/html; charset=UTF-8 Accept-Ranges: bytes Date: Thu, 03 Oct 2013 16:53:31 GMT X-Varnish: 2015266685 Age: 0 Via: 1.1 varnish Connection: keep-alive linux@tuxworld:~/Desktop$
