我已经尽可能多地环顾四周,我已经完全被难住了。
我正在运行一个顶部有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_proxi_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编码时的默认行为(当一些内容不是UTF-8编码时——尽管尽了最大努力,但无法修改)。
为此,经过一点工作,使用了mod_substitute(只是将文本解析为文本,忽略文件编码)和缓存解决方案,以加快加载时间。
可耻的mod_proxy_html不适用于这个项目,但最终找到了一种方法!
问题与mod_proxy_html(s。http://apache-http-server.18135.x6.nabble.com/PATCH-mod-xml2enc-eats-end-of-file-td5001104.html)
我能够验证所描述的行为(请参阅apache的错误日志和logleveldebug),该补丁对我有效——尽管它的方法不是一个完美的解决方案。
版本:mod_xml2enc(1.0.4)libxml2(2.7.6-0.9.1)
修改
ProxyHTMLDocType "<!DOCTYPE html>"
至
ProxyHTMLDocType "<!DOCTYPE html>" XML
注意
ProxyHTMLStripComments Off
这并不适用于所有评论。还没有想出解决这个问题的办法。