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