0

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

Antwort