2010-05-19 5 views
2

바니시의 모든 요청에 ​​대해 Apache에서 반환하는 "서버"헤더를 숨기려고합니다.가 바니시에서 설정 해제되었습니다 - 구문 오류

서브 vcl_fetch에 사용 :

Expected action, 'if' or '}' 
(/etc/varnish/default.vcl Line 43 Pos 9) 
    unset obj.http.Server; 
--------#####----------------- 

어떤 아이디어 : 니스에

unset obj.http.Server; 

내가 얻을 시작? 최근 버전의

답변

1

결국 수정되었습니다.

은 내가 헤더를 설정 해제 된 곳 vcl_fetch에 가지 않을 니스를 만들어 vcl_recv에서 리턴 (파이프)을했다.

2

(2.1 시리즈) 응답 객체가 beresp 불러 vcl_fetch 에서이 같은 일이 작업 (난 그냥 니스 2.1.0에 그것을 테스트) 수행한다 : I가 설치

unset beresp.http.Server; 

버전 (1.1.2)을 사용하고 언급 한 것과 똑같은 동작을합니다. 적어도 vcl_fetch 함수에서는 unset 키워드가 작동하지 않는 것처럼 보일 것입니다. 적어도에 대해 unset을 사용하여 멘션을 찾았 음을 알 수 있습니다.

가능한 경우, 내가 관찰 한 설정되지 않은 동작이 버그 인 경우 팀에서이를 수정하려고합니다. 가능한 경우 최신 바니시로 업그레이드 할 것을 제안합니다. 이 없다면

, 당신은 뭔가 다른 서버 설정을 시도 할 수 있습니다 :

set obj.http.Server = ""; 
set obj.http.Server = "BogoServer Whatever"; 

당신의 목표를 가정하면 서버 서명을 숨기는 것입니다. 당신이 원하는 것이 머리글을 완전히 없애는 것이라면, 나는 당신의 Varnish 버전으로는 할 수 없다고 말하려고 노력할 것입니다. 나는 니스 1.1.2 사용하고

1

또한 beresp 테스트와 같은 오류가 발생합니다. 이 미 설정에 문제가있는 것처럼

이 있습니다. 다음은 전체 인출입니다 :

나는 최신 최신 버전 니스 2.1.2을 설치 주위에있어
sub vcl_fetch { 
    unset obj.http.Server; 
    # force minimum ttl of 6 hours 
    if (obj.ttl < 6h) { 
      set obj.ttl = 6h; 
    } 
} 
+0

설명해 주셔서 감사합니다. - 답변을 업데이트했습니다. – Roadmaster

1

. 더 이상 구문 오류가 발생하지 않지만 원하는 효과는 적용되지 않습니다. 이 복원력있는 헤더는 여전히 존재합니다.

sub vcl_fetch { 
    unset beresp.http.Server; 
    set beresp.http.Server = "Apache"; 
} 

내가 여기 내가 볼거야, 헤더에 슬쩍 방화범을 사용

Server Apache/2.2.9 (Debian) 

난 그냥 설정, 해제가 아닌 같은 몇 가지 변화를 시도했습니다, 아무것도 작동하지 않습니다.

그것은 논리의 문제가 될 수 있습니까? 어쩌면 설정되지 않은 것을 다른 하위에 배치해야 할 수도 있습니다. 나는 그것을 vcl_miss와 vcl_deliver에 넣으려고했다. "Variable"beresp.http.Server는 메소드 ..에서 두 번 액세스 할 수 없습니다.

는 또한 사용자 정의 헤더를 설정하고 그것을 제거하는 시도했습니다. 그것도 작동하지 않았다.

관련 문제