Es sieht aus wie aus dem Code, dass da ein 403 kein weißer Liste Status ist, die Cache-Control
Header ignoriert wird:Gibt es eine Möglichkeit, Varnish zu zwingen, den Cache-Control-Header auf 403 Antworten zu lesen?
switch (http_GetStatus(hp)) {
default:
expp->ttl = -1.;
https://github.com/varnishcache/varnish-cache/blob/4.0/bin/varnishd/cache/cache_rfc2616.c#L112-L114
Dies ist das Beste, was ich tun konnte:
sub vcl_backend_response {
if (beresp.status == 403) {
set beresp.http.X-Status = beresp.status;
set beresp.status = 200;
}
}
sub vcl_deliver {
if (resp.http.X-Status) {
set resp.status = std.integer(resp.http.X-Status, 403);
unset resp.http.X-Status;
}
}
Während dies richtig setzt und den Status setzt, ist jede Anfrage ein Cache MISS
.
Siehe #2018