sen*_*enx 5 apache configuration assets reverse-proxy decoding
我正在尝试从Apache Web服务器(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
Run Code Online (Sandbox Code Playgroud)
响应:
HTTP/1.1 200 OK
...
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Type: text/css;charset=utf-8
Connection: Keep-Alive
Transfer-Encoding: chunked
Run Code Online (Sandbox Code Playgroud)
我在服务器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>
Run Code Online (Sandbox Code Playgroud)
当后端服务器使用压缩并且代理服务器在重写期间不处理缩减的内容时,会发生ERR_CONTENT_DECODING_FAILED错误.
我在这个wiki中以及mod_proxy_html文档中找到了有用的信息.
我成功尝试了以下内容(在重写之前膨胀):
ProxyHTMLEnable On
SetOutputFilter INFLATE;proxy-html;DEFLATE
ProxyHTMLURLMap / /app1/
Run Code Online (Sandbox Code Playgroud)
然后在读取mod_proxy_html页面上的(现已删除)注释后,我修改了这个(应该正确处理字符编码):
ProxyHTMLEnable On
RequestHeader unset Accept-Encoding
ProxyHTMLCharsetOut *
ProxyHTMLURLMap / /app1/
ProxyHTMLURLMap /app1/ /app1/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3046 次 |
| 最近记录: |