Varnish 캐시는 다양한 도메인을 어떻게 처리합니까?

Varnish 캐시는 다양한 도메인을 어떻게 처리합니까?

방금 Varnish에 대해 읽기 시작했고 이를 웹 서버의 프런트엔드로 사용하는 것을 고려하고 있습니다. 내 웹서버에는 동일한 쿼리 문자열이 사용될 때 동일한 콘텐츠를 가져오는 여러 도메인이 있습니다. 따라서 한 고객이 다음을 방문한다고 가정해 보겠습니다.

http://domain1.com/script.php?string1=abc&string2=123

그리고 나중에 다른 사람이 방문합니다.

http://domain2.com/script.php?string1=abc&string2=123

Varnish는 첫 번째 방문의 결과를 캐시하여 두 번째 클라이언트에 사용합니까? 감사해요!

편집하다:좀 더 읽어보면 다음과 같이 작동할 것 같습니다.

sub vcl_hash {
    set req.hash += req.url;
    return (hash);
}

따라서 http.host 변수를 해시에 추가하는 대신 이를 무시합니다.

답변1

그렇게 하도록 구성할 수 있습니다. 기본적으로는 그렇지 않습니다(그리고 그래서도 안 됩니다).

에서광택제 FAQ/HowDoI

호스트 이름이 많은 사이트가 있습니다. 호스트 이름이 캐시를 늘리는 것을 방지하려면 어떻게 해야 합니까?

모든 호스트 이름에 대한 "Host" 헤더를 정규화하여 이를 수행할 수 있습니다. 다음은 VCL 예입니다.

if (req.http.host ~ "^(www.)?example.com") { set req.http.host = "example.com"; }

답변2

내 VM에는 3개의 도메인이 있고 Nginx와 Varnish를 사용하고 있으며 현재 사전 프로덕션 구성을 진행 중입니다. 여기서는 다음과 같습니다.

NGINX:80 ==> VARNISH:8080 ==> NGINX:8081

도메인에 Varnish가 필요한 경우 Nginx:80을 프록시처럼 사용하고, 그렇지 않은 경우 FastCGI를 사용합니다. 이 예에서 Varnish가 아닌 사이트는 Varnish와 관련이 없습니다. 어리석어 보이지만 작동합니다 ;-) 그리고 내 고객 중 누구도 불평하지 않습니다(아직....).

관련 정보