summaryrefslogtreecommitdiffstats
path: root/src/main/resources/varnish/default.vcl
blob: 65f878a63ba9d8791b99e92eb6309c8feacd28a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

sub vcl_recv {

    if (req.request == "POST" && !req.http.Content-Length) {
        error 411 "Content-Length required";
    }

    # Require that the content be less than 8000 characters
    if (req.request == "POST" && !req.http.Content-Length ~ "^[1-7]?[0-9]{1,3}$") {
        error 413 "Request content too large (>8000)";
    }

    if (! (req.url ~ "^/openidm/") ) {
      set req.url = regsub(req.url, "^/", "/sqlfiddle/");
    }

    if ( req.url == "/sqlfiddle/") {
      set req.url = "/sqlfiddle/index.html"; 
    }

    if (req.request == "GET" && req.url != "/openidm/info/login" && req.url != "/openidm/endpoint/favorites?_queryId=myFavorites") {
        unset req.http.cookie;
    }

    if (req.request == "GET" && req.url == "/openidm/info/ping") {
        set req.http.X-OpenIDM-Username = "anonymous";
        set req.http.X-OpenIDM-Password = "anonymous";
        set req.http.X-OpenIDM-NoSession = "true";
    }

}

sub vcl_fetch {
    if (req.request == "GET") {
        if (req.url ~ "/openidm/info/.*" || req.url == "/openidm/endpoint/favorites?_queryId=myFavorites") {
            set beresp.ttl = 0s;
        } else {
            set beresp.ttl = 60m;
        }
    }

    if (beresp.status != 200) {
        set beresp.ttl = 0s;
    }
}