2016-11-18 9 views
3

Apache 웹 서버 (A)에서 다른 시스템 (B)의 다른 Apache 웹 서버로 역방향 프록시를 구성하려고합니다. 일부 자산은 지속적으로 (적어도 크롬) ERR_CONTENT_DECODING_FAILED 결과에 대해 나는 현재 내가이 서버 A에있는 것처럼 서버 B에있는 웹 페이지에 액세스 할 수있어 사용하고 구성으로Apache Proxying이 ERR_CONTENT_DECODING_FAILED 오류로 연결됨

그러나 요청합니다. 프록시 대신 단순 리디렉션을 사용하는 경우에는 발생하지 않습니다.

내가 요청 및 응답 헤더를 통해 탐색하고는 모든 전송 파일을 잘 갔다 보인다

요청 :

GET /app1/assets/css/vendor.min.css?1470017050 HTTP/1.1 
Host: some.host.address 
... 
Accept: text/css,*/*;q=0.1 
Accept-Encoding: gzip, deflate, sdch 

응답 :

HTTP/1.1 200 OK 
... 
Vary: Accept-Encoding 
Content-Encoding: gzip 
Content-Type: text/css;charset=utf-8 
Connection: Keep-Alive 
Transfer-Encoding: chunked 

나는에 구성 아래 사용 서버 A :

ProxyPreserveHost on 
ProxyPass "/app1/" "http://some.host.address:8080/app1/" 
ProxyPassReverse "/app1/" "some.host.address:8080/app1/" 
ProxyHTMLURLMap "http://some.host.address:8080" "/app1" 

<Location /app1/> 
     ProxyPassReverse /app1/ 
     ProxyHTMLEnable On 
     ProxyHTMLURLMap//app1/ 
</Location> 

답변

2

ERR_CONTENT_DECODING_FAILED 오류는 백엔드 서버가 압축을 사용하고 다시 작성하는 동안 압축 된 컨텐트를 프록시 서버에서 처리하지 못할 때 발생합니다.

유용한 정보가 this wiki에 있으며, Marco Balestra가 mod_proxy_html documentation에 대해 언급 한 바 있습니다.

ProxyHTMLEnable On 
SetOutputFilter INFLATE;proxy-html;DEFLATE 
ProxyHTMLURLMap//app1/ 

그런 다음 주석을 읽은 후, 나는 (정확하게 문자 인코딩을 처리해야)이에 수정 :

ProxyHTMLEnable On 
RequestHeader unset Accept-Encoding 
ProxyHTMLCharsetOut * 
ProxyHTMLURLMap//app1/ 
ProxyHTMLURLMap /app1/ /app1/ 

본인은 (재 작성하기 전에 팽창) 성공 다음 시도