Created
March 1, 2016 18:16
-
-
Save perbu/93803707dbcdbc345da0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sub vcl_hit { | |
if (obj.ttl >= 0s) { | |
# normal hit | |
return (deliver); | |
} | |
# We have no fresh fish. Lets look at the stale ones. | |
if (std.healthy(req.backend_hint)) { | |
# Backend is healthy. Limit age to 10s. | |
if (obj.ttl + 10s > 0s) { | |
set req.http.grace = "normal(limited)"; | |
return (deliver); | |
} else { | |
# No candidate for grace. Fetch a fresh object. | |
return(fetch); | |
} | |
} else { | |
# backend is sick - use full grace | |
if (obj.ttl + obj.grace > 0s) { | |
set req.http.grace = "full"; | |
return (deliver); | |
} else { | |
# no graced object. | |
return (fetch); | |
} | |
} | |
} | |
sub vcl_backend_response { | |
set beresp.ttl = 10s; | |
set beresp.grace = 1h; | |
} | |
sub vcl_recv { | |
# intial state | |
set req.http.grace = "none"; | |
} | |
sub vcl_deliver { | |
# copy to resp so we can tell from the outside. | |
set resp.http.grace = req.http.grace; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Is this working on Varnish 6? I never hit the
req.http.grace = "full";
line. After 10 seconds of the backend going offline, I get a503 Backend fetch failed