X-Git-Url: https://git.sesse.net/?p=remoteglot;a=blobdiff_plain;f=default.vcl;h=bb52d6431000f66fb22214d51c0eb1f9d89e5be9;hp=e0fbc4555c20be4c1938a906fedee322ae4f898c;hb=bdf7fb246fa3fcf64350d8edd3f3a9ea9c32f46f;hpb=778e663fc0fd4657d78c8a6d27ea14e120cfb025;ds=sidebyside diff --git a/default.vcl b/default.vcl index e0fbc45..bb52d64 100644 --- a/default.vcl +++ b/default.vcl @@ -2,6 +2,7 @@ vcl 4.0; +# You can have multiple ones; see vcl_recv. backend analysis { .host = "127.0.0.1"; .port = "5000"; @@ -18,8 +19,12 @@ sub vcl_recv { } if (req.http.host ~ "analysis\.sesse\.net$" && req.url ~ "^/analysis\.pl") { set req.backend_hint = analysis; + # Ignored by the backend; just to identify it in vcl_backend_response. + set req.http.x-analysis-backend = "backend1"; return (hash); } + # You can check on e.g. /analysis2\.pl here if you have multiple + # backends; just remember to set x-analysis-backend to something unique. } sub vcl_deliver { @@ -31,6 +36,7 @@ sub vcl_deliver { unset resp.http.X-Powered-By; } unset resp.http.x-analysis; + unset resp.http.x-analysis-backend; } sub vcl_hash { @@ -49,9 +55,18 @@ sub vcl_backend_response { if (beresp.http.content-type ~ "text" || beresp.http.content-type ~ "json") { set beresp.do_gzip = true; } + if (bereq.url ~ "^/hash/") { + set beresp.ttl = 5s; + set beresp.http.x-analysis = 1; + set beresp.http.x-analysis-backend = bereq.http.x-analysis-backend; + return (deliver); + } if (beresp.http.content-type ~ "json") { set beresp.http.x-analysis = 1; - ban ( "obj.http.x-analysis == 1 && obj.http.x-remoteglot-last-modified != " + beresp.http.x-remoteglot-last-modified ); + set beresp.http.x-analysis-backend = bereq.http.x-analysis-backend; + ban ( "obj.http.x-analysis == 1 && " + + "obj.http.x-analysis-backend == " + bereq.http.x-analysis-backend + " && " + + "obj.http.x-rglm != " + beresp.http.x-rglm ); } return (deliver); }