]> git.donarmstrong.com Git - dsa-puppet.git/blob - modules/varnish/files/default.vcl
add varnish module
[dsa-puppet.git] / modules / varnish / files / default.vcl
1 backend holter {
2         # holter.debian.org
3         .host = "194.177.211.202";
4         .port = "80";
5 }
6 backend powell {
7         # powell.debian.org
8         .host = "87.106.64.223";
9         .port = "80";
10 }
11
12 sub vcl_recv {
13
14         # Add a unique header containing the client address
15         remove req.http.X-Forwarded-For;
16         set    req.http.X-Forwarded-For = req.http.rlnclientipaddr;
17
18         ### restart logic, this will redefine the backends if vcl_restart has been triggered
19         if (req.restarts == 0) {
20                 set req.backend = holter;
21         } else if (req.restarts == 1) {
22                 set req.backend = powell;
23         } else if (req.restarts == 2) {
24                 set req.backend = holter;
25         } else {
26                 set req.backend = holter;
27         }
28
29
30         if (req.request == "GET" && req.url ~ "^/search?") {
31                 return(pass);
32         }
33         if (req.request == "GET" && req.url ~ "^/(squeeze|wheezy|sid|experimental|stable|testing|unstable|rc-buggy|squeezy-backports|lenny-backports|Pics)/") {
34                 return(lookup);
35         }
36 }
37
38 sub vcl_fetch {
39         if (beresp.status != 200 && beresp.status != 403 && beresp.status != 404 && beresp.status != 301 && beresp.status != 302) {
40                 return(restart);
41         }
42
43         # if i cant connect to the backend, ill set the grace period to be 600 seconds to hold onto content
44         set beresp.ttl = 600s;
45         set beresp.grace = 600s;
46
47         if (beresp.status == 404) {
48                 set beresp.ttl = 0s;
49         }
50
51         if (beresp.status >= 500) {
52                 set beresp.ttl = 0s;
53         }
54
55         if (req.request == "GET" && req.url ~ "^/search?") {
56                 set beresp.ttl = 0s;
57         }
58
59         if (req.request == "GET" && req.url ~ "^/(squeeze|wheezy|sid|experimental|stable|testing|unstable|rc-buggy|squeezy-backports|lenny-backports|Pics)/") {
60                 set beresp.ttl = 3600s;
61         }
62
63
64         set beresp.http.X-Cacheable = "YES";
65         return(deliver);
66 }
67
68
69 sub vcl_deliver {
70
71         set resp.http.X-Served-By = server.hostname;
72         if (obj.hits > 0) {
73                 set resp.http.X-Cache = "HIT";
74                 set resp.http.X-Cache-Hits = obj.hits;
75         } else {
76                 set resp.http.X-Cache = "MISS";
77         }
78
79         return(deliver);
80 }