백엔드가 다운되면 Varnish Server에서 오류 503이 발생합니다.

백엔드가 다운되면 Varnish Server에서 오류 503이 발생합니다.

Varnish는 사이트의 백엔드가 다운되면 즉시 503 Service Unavailable 오류를 표시하기 시작합니다. 구성은 모든 것이 7일 동안 캐시되어야 한다는 것입니다.

백엔드가 한 시간 동안 다운되면 사이트가 계속 작동할 것으로 예상합니다. 캐시 서버는 여전히 해당 캐시의 페이지를 제공해야 합니다.

이 사이트는 하루 300,000회의 페이지 조회수를 기록하는 완전히 정적인 사이트입니다. 현재까지의 적중률은 2:5(MISS - HIT)인데, 이것도 더 높아야 한다고 생각합니다.

/etc/varnish/default 구성:

backend www {
   .host = "ip address here";
   .port = "http";
   .connect_timeout = 1s;
   .first_byte_timeout = 5s;
   .between_bytes_timeout = 2s;
}
sub vcl_deliver {
        if (obj.hits > 0) {
                set resp.http.X-Cache = "HIT";
        }
        else {
                set resp.http.X-Cache = "MISS";
        }
}
sub vcl_recv {
        #if (req.request == "GET" && req.url ~ "\.(js|css|jpg|jpeg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|swf|cgi|ico)$") {
                unset req.http.cookie;
                return (lookup);
        #}
}
sub vcl_fetch {
        if (beresp.http.Set-Cookie) {
        #if (req.request == "GET" && req.url ~ "\.(js|css|jpg|jpeg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|swf|cgi|ico)$") {
                unset beresp.http.set-cookie;
                set beresp.ttl = 7d;
                return(deliver);
        }
}

웹사이트의 .htaccess:

<IfModule mod_headers.c>
SetEnv force-no-vary
Header append Vary: Accept-Encoding
Header unset Pragma
Header unset ETag
Header unset Last-Modified
FileETag None

# YEAR
<filesMatch "\.(ico|gif|jpg|jpeg|png|flv|pdf)$">
  Header set Cache-Control "max-age=29030400"
</filesMatch>
# WEEK
<filesMatch "\.(js|css|swf)$">
  Header set Cache-Control "max-age=604800"
</filesMatch>
# 3 DAYS
<filesMatch "\.(php|cgi|pl|htm)$">
  Header set Cache-Control "max-age=259200"
</filesMatch>
</ifModule>

답변1

Grace 모드 및/또는 Saint 모드 구현을 살펴봐야 합니다.

바니시 그레이스 & 세인트 모드

Grace 모드를 사용하면 백엔드가 다운되거나 느릴 때 오래된 콘텐츠를 제공할 수 있으며, Saint 모드를 사용하면 사용한 백엔드가 오류로 응답하는 경우 다른 백엔드를 다시 시도할 수 있습니다.

관련 정보