Skip to content

Instantly share code, notes, and snippets.

@adautoneto
Created November 28, 2018 15:37
Show Gist options
  • Save adautoneto/943872655654f92e1dce8389ed9515b9 to your computer and use it in GitHub Desktop.
Save adautoneto/943872655654f92e1dce8389ed9515b9 to your computer and use it in GitHub Desktop.
Varnish grace period for when server is down
vcl 4.0;
import directors;
backend server_1 {
.host = "172.30.0.125";
.port = "81";
}
backend server_2 {
.host = "172.30.1.178";
.port = "81";
}
sub vcl_init {
new balancer = directors.round_robin();
balancer.add_backend(server_1);
balancer.add_backend(server_2);
}
sub vcl_recv {
set req.backend_hint = balancer.backend();
}
sub vcl_backend_response {
if (beresp.status >= 500) {
#if (beresp.status >= 500 && bereq.is_bgfetch) {
return (abandon);
}
set beresp.grace = 24h;
return (deliver);
}
sub vcl_deliver {
if (obj.hits > 0) { # Add debug header to see if it's a HIT/MISS and the number of hits, disable when not needed
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
return (deliver);
}
vcl 4.0;
# Default backend definition. Set this to point to your content server.
backend default {
.host = "<IP or DNS>";
.port = "<PORT>";
}
sub vcl_backend_response {
if (beresp.status >= 500) {
#if (beresp.status >= 500 && bereq.is_bgfetch) {
return (abandon);
}
set beresp.grace = 24h;
return (deliver);
}
sub vcl_deliver {
if (obj.hits > 0) { # Add debug header to see if it's a HIT/MISS and the number of hits, disable when not needed
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
return (deliver);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment