我正在尝试将Apache服务器(A)的反向代理配置到不同机器(B)上的另一个Apache web服务器。
使用我目前正在使用的配置,我可以访问位于服务器B上的网页,就好像它在服务器A上一样,但是对某些资产的请求经常会导致ERR_CONTENT_DECODING_FAILED (至少在chrome中)。当我使用简单的重定向而不是代理时,这种情况不会发生。
我浏览了请求和响应头,文件传输似乎一切顺利:
请求:
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>发布于 2017-07-20 13:49:38
当后端服务器使用压缩而代理服务器在重写过程中不处理压缩内容时,就会发生ERR_CONTENT_DECODING_FAILED错误。
我在这个维基和html文档中找到了有用的信息。
我成功地尝试了以下几点(重写前膨胀):
ProxyHTMLEnable On
SetOutputFilter INFLATE;proxy-html;DEFLATE
ProxyHTMLURLMap / /app1/然后,在读取了mod_proxy_html页面上的注释(现在删除了)之后,我对此进行了修改(应该正确处理字符编码):
ProxyHTMLEnable On
RequestHeader unset Accept-Encoding
ProxyHTMLCharsetOut *
ProxyHTMLURLMap / /app1/
ProxyHTMLURLMap /app1/ /app1/https://stackoverflow.com/questions/40683850
复制相似问题