2015-01-13 8 views
3

백엔드가 이미 "content-encoding"헤더를 설정 한 경우 ggin을 중지시키기 위해 nginx를 속이는 영리한 방법이 있습니까?fastcgi 백엔드가 때때로 gzip으로 콘텐츠 인코딩을 제공 할 때 Nginx 이중 gzip 인코딩을 비활성화하는 방법은 무엇입니까?

Nginx는 PHP fastcgi 백엔드의 출력을 gzip으로 구성합니다.

이것은 99 %의 경우에 효과적입니다.

드물게 PHP는 원시 gzipped 파일을 보내고 Content-Encoding: gzip 헤더를 첨부합니다.

Nginx는 불행히도 그 내용을 다시 gzip하려고합니다.

두 번 content-encoding: gzipcontent-encoding: gzip 헤더와 이중 인코딩 된 gzipped 본문을 생성합니다.

대부분의 최신 브라우저에서 Firefox, Chrome을 처리 할 수 ​​있습니다.

IE8은 Windows 용 Safari 5에서는 불가능합니다. 대신 콘텐츠 인코딩 헤더를 병합하고 gzipped 본문 만 디코딩하기 때문에 깨진 gzipped 콘텐츠가 표시됩니다.

어떤 아이디어 주셔서 감사합니다.

fastcgi_param HTTP_ACCEPT_ENCODING  ""; 

이 백엔드에서 인코딩을 사용할 수 없게됩니다 :

+0

해결 했습니까? 나는 같은 문제가있다. 감사! – davidbitton

+0

이 문제도 발생했습니다. 내 응용 프로그램 코드에 Vary 헤더를 추가하여이를 해결했습니다.'header ('Vary : Accept-Encoding'); –

답변

0

어딘가에는 적용 nginx.conf에 (어딘가에 fastcgi_params 파일이 있어야한다).

Nginx가이 후에 인코딩 된 콘텐츠를 제공하기를 바랍니다. (확실하지 않습니다)