Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- backend default {
- .host = "127.0.0.1";
- .port = "81";
- }
- sub vcl_recv {
- set req.backend = default;
- ######XAV#####
- if (req.url ~ "\.(png|gif|jpg|jpeg|js|css|ico|pdf)$")
- {
- unset req.http.Cookie;
- #return (lookup);
- }
- ######/XAV####
- 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 != "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);
- }
- if (req.http.Authorization || req.http.Cookie) {
- /* Not cacheable by default */
- return (pass);
- }
- return (lookup);
- }
- sub vcl_pipe {
- # Note that only the first request to the backend will have
- # X-Forwarded-For set. If you use X-Forwarded-For and want to
- # have it set for all requests, make sure to have:
- # set bereq.http.connection = "close";
- # here. It is not set by default as it might break some broken web
- # applications, like IIS with NTLM authentication.
- return (pipe);
- }
- sub vcl_pass {
- return (pass);
- }
- sub vcl_hash {
- hash_data(req.url);
- if (req.http.host) {
- hash_data(req.http.host);
- } else {
- hash_data(server.ip);
- }
- return (hash);
- }
- sub vcl_hit {
- return (deliver);
- }
- sub vcl_miss {
- return (fetch);
- }
- sub vcl_fetch {
- # Varnish determined the object was not cacheable
- if (beresp.ttl <= 0s) {
- set beresp.http.X-Cacheable = "NO:Not Cacheable";
- # You don't wish to cache content for logged in users
- } elsif (req.http.Cookie ~ "(UserID|_session)") {
- set beresp.http.X-Cacheable = "NO:Got Session";
- return(hit_for_pass);
- # You are respecting the Cache-Control=private header from the backend
- } elsif (beresp.http.Cache-Control ~ "private") {
- set beresp.http.X-Cacheable = "NO:Cache-Control=private";
- return(hit_for_pass);
- # Varnish determined the object was cacheable
- } else {
- set beresp.http.X-Cacheable = "YES";
- }
- if (beresp.ttl <= 0s ||
- beresp.http.Set-Cookie ||
- beresp.http.Vary == "*") {
- /*
- * Mark as "Hit-For-Pass" for the next 2 minutes
- */
- set beresp.ttl = 120 s;
- return (hit_for_pass);
- }
- return (deliver);
- }
- sub vcl_deliver {
- if (obj.hits > 0)
- {
- set resp.http.X-Cache = "HIT";
- set resp.http.X-Cache-Hits = obj.hits;
- # set resp.http.X-Cache-Backend = req.backend;
- }
- else
- {
- set resp.http.X-Cache = "MISS";
- }
- #remove resp.http.X-Varnish;
- remove resp.http.Via;
- remove resp.http.Age;
- remove resp.http.X-Powered-By;
- return (deliver);
- }
- sub vcl_error {
- set obj.http.Content-Type = "text/html; charset=utf-8";
- set obj.http.Retry-After = "5";
- synthetic {"
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html>
- <head>
- <title>"} + obj.status + " " + obj.response + {"</title>
- </head>
- <body>
- <h1>Error "} + obj.status + " " + obj.response + {"</h1>
- <p>"} + obj.response + {"</p>
- <h3>Guru Meditation:</h3>
- <p>XID: "} + req.xid + {"</p>
- <hr>
- <p>Varnish cache server</p>
- </body>
- </html>
- "};
- return (deliver);
- }
- sub vcl_init {
- return (ok);
- }
- sub vcl_fini {
- return (ok);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement