1

我已经尽可能多地环顾四周,我已经到了完全被难住的地步。

我正在运行一个顶部有 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 不适用于这个项目 - 但最终找到了一种方法!

4

2 回答 2

1

调整

ProxyHTMLDocType "<!DOCTYPE html>" 

ProxyHTMLDocType "<!DOCTYPE html>" XML

意识到

ProxyHTMLStripComments Off 

这不适用于所有评论。还没有想出解决这个问题的办法。

于 2012-12-11T11:22:32.910 回答
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)

于 2013-06-13T17:11:19.587 回答