2012-11-02 2 views
4

나는 현재 작동하는 광택 3.xx 서버가 있습니다. Varnish가 내 사이트의 로그인 페이지를 캐싱하고 있습니다.바니시 제외 URL

www.mysite.com/staff

하지만 예를 들어 회원이 링크 직원에 따라 다른 URL을 가질 수

www.mysite.com/staff/index.php?/Tickets/Ticket /보기/222200

스태프 페이지 캐싱을 제외하기 위해 내 광택 설정 파일이 설정되었지만 로그인 페이지를 캐싱하기 때문에 작동하지 않습니다. 캐시를 지우려면 광택을 다시 시작할 때까지 로그인하지 않습니다. .

sub vcl_recv { 
    # Allow purge only from internal users 
    if (req.request == "PURGE") { 
     if (!client.ip ~ internal_net) { 
      error 405 "Not allowed."; 
     } 
     return (lookup); 

    # Exclude the following 
    if (req.url ~ "^/login\.php" || 
     req.url ~ "^/search\.php" || 
     req.url ~ "^/admin(.*)" || 
     req.url ~ "^/admin(.*)" || 
     req.url ~ "^/search(.*)" || 
     req.url ~ "^/visitor(.*)" || 
     req.url ~ "^/staff(.*)" || 
     req.url ~ "^/staff\.php" 
    ) { 
     return(pass); 

    } 

    if (req.http.cookie ~ "vb(.*)" || 
     req.http.cookie ~ "bb(.*)" || 
     req.http.cookie ~ "SWIFT_(.*)" || 
     req.url ~ "\?(.*\&)?s=[a-fA-F0-9]{32}(\&|$)" || 
     req.http.cookie ~ "bb_password") { 

     return(pass); 
    } else { 
     unset req.http.cookie; 
    } 
} 

캐시 할 디렉토리를 제외하고 다른 방법을 사용할 수 있습니까? IE : 접미사 뒤에 오는 모든 항목은 캐쉬되어서는 안됩니다.

답변

3

제외 기능은 구현 한 방식대로 완벽하게 작동해야합니다. 그러나 붙여 넣은 코드가 실제 VCL이면 PURGE 섹션에 if() 문이 열려 있습니다.

sub vcl_recv { 
     # Allow purge only from internal users 
     if (req.request == "PURGE") { 
       if (!client.ip ~ internal_net) { 
         error 405 "Not allowed."; 
       } 
       return (lookup); 

# Exclude the following 

오류가 실제 VCL에 존재하지 않는, 그래서

sub vcl_recv { 
     # Allow purge only from internal users 
     if (req.request == "PURGE") { 
       if (!client.ip ~ internal_net) { 
         error 405 "Not allowed."; 
       } 
       return (lookup); 
     } 

# Exclude the following 

니스는하지만 잘못된 VCL을 허용해서는 안 읽어, 전체 VCL과 질문을 업데이트하십시오.

+0

감사합니다. 당신은 돈을 가지고 있습니다. 이것은 우리를 위해 일해 왔습니다. – rezizter

관련 문제