我尽可能多地环顾四周,而且我已经达到了我完全难倒的程度。
我正在运行一个带有Apache的RedHat服务器,我将其用作代理,位于外部世界和其他两个应用服务器之间,具有完全不同的基础(一个IIS,一个Linux)。
这两个服务器都有正确的内部网络URL,驻留在它们上的应用程序可以理解。应用程序(DotNetNuke和WordPress派生)都生成HTML 5页面,其中包含正确/适当的标记,并在代理之外(即在内部网络上)正确呈现。
然而,当通过代理传递这些页面时,结果似乎是在CSS和JavaScript文件末尾缺少字符。
所以(在实践中),JavaScript代码如下:
... {return f})})(window);
或像这样的CSS:
...
background-position:center left;
background-repeat:no-repeat;
}
...变成这样的代码:
... {return f})})(window
或者像这样:
...
background-position:center left;
background-repeat:no-re
代理设置正在使用mod_proxy和mod_proxy_html Apache模块 - 而且我很确定我遇到的问题是与mod_proxy_html的配置有关,目前看起来像这样:
ProxyHTMLEnable On
ProxyHTMLBufSize 102400
ProxyHTMLExtended On
ProxyHTMLStripComments Off
ProxyHTMLDocType "<!DOCTYPE html>"
ProxyHTMLMeta Off
#ProxyHTMLLogVerbose On
#LogLevel Debug
<Location /xxxxx>
ProxyPass http://www.example.com
ProxyPassReverse http://www.example.com
ProxyHTMLURLMap http://www.example.com /xxxxx
ProxyHTMLURLMap / /xxxxx/
</Location>
<Location />
ProxyPass http://10.11.0.51/
ProxyPassReverse http://10.11.0.51/
</Location>
在此处浏览Apache文档:http://httpd.apache.org/docs/2.4/en/mod/mod_proxy_html.html - 但并未提供任何直接的线索。
有没有人遇到同样的问题?或者有什么东西我很快失踪?
感谢任何帮助!
更新
最终,问题似乎是mod_proxy_html在将所有内容解析为UTF-8编码时的默认行为(当某些内容不是 - 尽管付出了最大的努力,但无法修改)。
为此,经过一些工作后,改为使用mod_substitute(只是将文本解析为文本,忽略文件编码)和缓存解决方案,以加快加载时间。
羞耻mod_proxy_html对这个项目不起作用 - 但最终发现了一种方法!
答案 0 :(得分:1)
修改
ProxyHTMLDocType "<!DOCTYPE html>"
到
ProxyHTMLDocType "<!DOCTYPE html>" XML
注意
ProxyHTMLStripComments Off
不适用于所有评论。尚未找到解决方案。
答案 1 :(得分:1)
问题与mod_proxy_html中的错误有关(s。http://apache-http-server.18135.x6.nabble.com/PATCH-mod-xml2enc-eats-end-of-file-td5001104.html)
我能够验证所描述的行为(请参阅apache的错误日志,使用loglevel debug ),该补丁适用于我 - 虽然它的方法不是一个完美的解决方案。
版本: mod_xml2enc(1.0.4) libxml2(2.7.6-0.9.1)