cache everything
[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         return(lookup);
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 >= 500) {
48                 set beresp.ttl = 0s;
49         }
50
51         set beresp.http.X-Cacheable = "YES";
52         return(deliver);
53 }
54
55
56 sub vcl_deliver {
57
58         set resp.http.X-Served-By = server.hostname;
59         if (obj.hits > 0) {
60                 set resp.http.X-Cache = "HIT";
61                 set resp.http.X-Cache-Hits = obj.hits;
62         } else {
63                 set resp.http.X-Cache = "MISS";
64         }
65
66         return(deliver);
67 }