varnish add
This commit is contained in:
@@ -1,34 +1,35 @@
|
||||
vcl 4.1;
|
||||
|
||||
import vsthrottle;
|
||||
|
||||
backend app {
|
||||
.host = "app";
|
||||
.port = "8080";
|
||||
}
|
||||
|
||||
acl purge { "localhost"; "127.0.0.1"; }
|
||||
acl purge { "127.0.0.1"; }
|
||||
|
||||
sub vcl_recv {
|
||||
# RATE LIMIT
|
||||
if (!vsthrottle.is_allowed(client.ip, 10, 10s)) {
|
||||
return (synth(429, "Too Many Requests"));
|
||||
}
|
||||
|
||||
# PURGE tylko lokalnie
|
||||
if (req.method == "PURGE") {
|
||||
if (!client.ip ~ purge) { return (synth(405, "Not allowed")); }
|
||||
if (!client.ip ~ purge) {
|
||||
return (synth(405, "Not allowed"));
|
||||
}
|
||||
return (purge);
|
||||
}
|
||||
|
||||
# omijamy cache dla healthchecków / wewn. nagłówka
|
||||
if (req.url == "/healthcheck" || req.http.X-Internal-Check) { return (pass); }
|
||||
if (req.url == "/healthcheck" || req.http.X-Internal-Check) {
|
||||
return (pass);
|
||||
}
|
||||
|
||||
# metody inne niż GET/HEAD bez cache
|
||||
if (req.method != "GET" && req.method != "HEAD") { return (pass); }
|
||||
if (req.method != "GET" && req.method != "HEAD") {
|
||||
return (pass);
|
||||
}
|
||||
|
||||
# static – agresywnie cache’ujemy
|
||||
if (req.url ~ "^/static/" || req.url ~ "\.(css|js|png|jpg|svg|ico|woff2?)$") { return (hash); }
|
||||
if (req.url ~ "^/static/" || req.url ~ "\.(css|js|png|jpg|svg|ico|woff2?)$") {
|
||||
return (hash);
|
||||
}
|
||||
|
||||
return (hash);
|
||||
}
|
||||
@@ -52,7 +53,4 @@ sub vcl_deliver {
|
||||
} else {
|
||||
set resp.http.X-Cache = "MISS";
|
||||
}
|
||||
|
||||
set resp.http.X-RateLimit-Limit = "10";
|
||||
set resp.http.X-RateLimit-Window = "10s";
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user