我已经在 CentOS 6.4 机器上使用 mod_proxy、mod_proxy_html (3.1.3) 和 mod_xml2enc 设置了反向代理。
代理可以很好地为目标服务器提供服务,但它会使非 ASCII 字符变得混乱(在我的情况下是“äöüéàè”)。
我搜索了整个地图试图找到解决方案但无济于事。
响应标头中正确指定了编码,并且与目标服务器的编码相同(utf-8)。我还尝试通过以下方式显式设置 xml2enc 使用的编码:
xml2EncDefault utf-8
但没有效果。
我正在虚拟主机上运行代理,代理配置设置如下:
ProxyRequests off
ProxyHTMLLinks a href
ProxyHTMLLinks area href
ProxyHTMLLinks link href
ProxyHTMLLinks img src longdesc usemap
ProxyHTMLLinks object classid codebase data usemap
ProxyHTMLLinks q cite
ProxyHTMLLinks blockquote cite
ProxyHTMLLinks ins cite
ProxyHTMLLinks del cite
ProxyHTMLLinks form action
ProxyHTMLLinks input src usemap
ProxyHTMLLinks head profile
ProxyHTMLLinks base href
ProxyHTMLLinks script src for
ProxyHTMLLinks iframe src
ProxyPass /foo/ http://someserver.com/
ProxyPassReverse /foo/ http://www.someserver.com/
<Location /foo/>
SetOutputFilter INFLATE;proxy-html;DEFLATE
ProxyPassReverse /
ProxyPassReverseCookiePath / /foo
ProxyHTMLURLMap http://www.someserver.com /foo
ProxyHTMLURLMap http://someserver.com /foo
RequestHeader unset Accept-Encoding
</Location>
答案1
事实证明,“mod_proxy_html”在这一切中是无辜的。
通过以下方式声明编码:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
使问题消失。
这有点奇怪,因为“Content-Type”在响应标头中已正确设置。