2014-02-06 2 views
0

쿠키 값에 따라 동일한 페이지에 캐시가 발생하지 않도록하고 싶습니다. (내 사용자는/firstname-lastname과 같은 URL로 프로필을 가지고 있으며 다른 사용자의 프로필을 방문 할 수 있습니다).Varnish : VCL ~ req 값

내 쿠키에는 "성씨 - 성"값을 저장하고 그것에 대한 테스트를 시도합니다. 여기에 컴파일 오류

set req.http.X-SLUG = regsub(req.http.cookie, ".*user_slug=([^;]+);.*", "\1"); 
if (req.url ~ "^/" + req.http.X-SLUG) { 

그리고 :

Expected ')' got '+' (program line 73), at ('conf.vcl' Line 50 Pos 28) 
     if (req.url ~ "^/" + req.http.X-SLUG) { 
---------------------------#------------------- 

당신이 어떻게 할 knon 함을 그래서 난이 만든?

감사

니스에서

답변

0

모든 정규 표현식에이 구성이 처음로드 할 때 컴파일, 따라서 정적 문자열이어야합니다. 나는 ;을 제거 위의 예에서

set req.http.X-SLUG = regsub(req.http.cookie, ".*user_slug=([^;]+).*", "\1"); 
set req.http.X-TMP-URL = regsub(req.url, "^/(.*)$", "\1"); 
if (req.http.X-SLUG == req.http.X-TMP-URL) { 
    .... 
} 
remove req.http.X-TMP-URL; 

참고 :이 문제를 해결하려면

한 가지 방법은, 관심있는 URL의 일부를 추출하는 regsub 호출을 사용 어떤지를 테스트하는 것입니다 X-SLUG regex에서. 이렇게하면 user_slug가 목록의 마지막 쿠키 일 때도 정규 표현식이 작동합니다.

+0

Perfect! 정규 표현식이 처음로드 될 때 컴파일되었는지 알지 못했습니다. 감사 – Bacteries