我已经尽可能多地环顾四周,我已经到了完全被难住的地步。
我正在运行一个顶部有 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 不适用于这个项目 - 但最终找到了一种方法!