2016-11-18 11 views
3

Я пытаюсь настроить обратный прокси-сервер с веб-сервера Apache (A) на другой веб-сервер Apache на другой машине (B).Apache Proxying приводит к ошибке ERR_CONTENT_DECODING_FAILED

С конфигурацией Я в настоящее время использую я могу получить доступ к веб-страницу, расположенную на сервере B, как если бы он был на сервере А, однако запросы на некоторые активы постоянно приводят к 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, а также в комментарии Марко Балестры по телефону 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/