0

동일한 가상 서버에 라이브 웹 사이트 및 준비 버전이 설정되어 있습니다. 라이브 사이트는 Varnish를 사용하며 인증이 없으며 준비 사이트는 Varnish를 바이 패스하지만 다이제스트 인증을 사용합니다. 내 VCL 파일에서 나는이 있습니다바니시 및 다이제스트 인증으로 인해 URI가 일치하지 않음

sub vcl_recv { 
    if (req.http.Authorization || req.http.Authenticate) { 
     return(pass); 
    } 

    if (req.http.host != "live.site.com") { 
     return(pass); 
    } 

내가 어떤 쿼리 문자열과 자원이 제공되지 않는 이에 준비 사이트에 문제를보고 있어요 - 내가 '400 잘못된 요청'을보고 아파치 로그에 방화범 이 :

[Fri Sep 19 11:13:03 2014] [error] [client 127.0.0.1] Digest: uri mismatch - 
    </wp-content/plugins/jetpack/modules/wpgroho.js?ver=3.9.2> does not match 
    request-uri </wp-content/plugins/jetpack/modules/wpgroho.js>, referer: 
    http://stage.site.com/ 

나는 무엇을 잘못 했는가, 누군가는 이것을 고치는 방법을 알고 있는가?

감사합니다,

토비

답변

0

이 좋아, 그것은, 여기에 내가 무엇을 발견 발견은 (경우에 도움이 다른 사람) : 나는, 물론, 내 니스 VCL의 섹션을해야합니까

그 정적 파일에서의 QueryStrings는 캐싱 지원하기 위해 제거 :이 명확하게 인증을 소화와 충돌

if (req.request ~ "^(GET|HEAD)$" && req.url ~ "\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)(\?.*)?$") { 
    if (req.url ~ "nocache") { 
     return(pass); 
    } 
    set req.url = regsub(req.url, "\?.*$", ""); 
    unset req.http.Cookie; 
    set req.grace = 2m; 
    return(lookup); 
} 

를, 그래서 VCL의 그 부분을 다시 방문해야합니다.

if (req.http.Authorization || req.http.Authenticate || 
     req.url ~ "nocache") { 
     return(pass); 
    } 
:

UPDATE 난 그냥에 두 번째 조건 변경