我的Apache反向代理将代码添加到头标记

时间:2016-07-03 10:57:47

标签: html html5 apache proxy reverse-proxy

我有一个使用Apache 2.4.20的简单反向代理服务器,它从内部Apache Web服务器获取HTML文件。页面提取和URL重写工作正常,但是出现了问题。

在通过代理传递任何网页后,有三件事是不正确的:头标记的内容出现在正文中,头标记丢失了,并且是一个神秘的">" " p"标签添加在body标签的顶部。

这个额外的<p>></p>代码向我建议检测HTML标记时出错(它可能是<head>的一部分)。此外,即使没有head标签中的内容,body标签仍然以奇怪的代码开头。

代理内容 - 在开发者工具,Google Chrome浏览器中查看
Screenshot image described on above line. http://i.stack.imgur.com/UbxD8.png

代理内容 - 获取文件的原始来源:
Screenshot image described on above line. http://i.stack.imgur.com/nRs4R.png

原始HTML文件 - 直接从内部服务器文件系统打开:
Screenshot image described on above line. http://i.stack.imgur.com/alxtr.png

代理服务器配置文件 - 有关转移的部分和ProxyHTML
Screenshot image described on above line. http://i.stack.imgur.com/79t6b.png

我知道原始服务器工作正常,所以这不会导致问题 以下是直接从浏览器(代理服务器设备)上的原始服务器查看的HTML文件的屏幕截图,以及Chrome开发者工具中显示的源代码:
Screenshot image described in previous sentence. http://i.stack.imgur.com/y81UM.png

更新:正如预期的那样, mod_proxy_html 是我的问题的主要原因(将其关闭原始文件)。但是,这个对我来说不是一个解决方案,因为我需要该工具来重写代理文档中的相对URL引用。我阅读了documentation page,但它没有描述任何无疑造成我问题的功能。

来自documentation mod_proxy_html 指令列表,我认为这些指令并不相关,有些经过测试: ProxyHTMLBufSize ProxyHTMLCharsetOut ProxyHTMLDocType ProxyHTMLEnable ProxyHTMLEvents ProxyHTMLExtended (默认关闭), ProxyHTMLFixups (尝试建议), ProxyHTMLInterp ProxyHTMLLinks ProxyHTMLMeta (默认关闭), ProxyHTMLStripComments ProxyHTMLURLMap

3 个答案:

答案 0 :(得分:1)

我有同样的问题。但是,在同一台计算机上,即使使用完全相同的配置但不同的URL,使用相同反向代理的其他站点也可以正常工作。我听不懂...,除非我注意到有问题的文件在文件开头有BOM signature

这导致ProxyHTML混乱不堪,以至于它删除了<head></head>标签。

使用dos2unix实用工具删除BOM表后,文件显示正确。

您的帖子给了我更多与之抗争的动力。谢谢。

答案 1 :(得分:0)

您正在使用mod_proxy_html

此mod将尝试根据指令影响代理的HTML资源。我的建议是删除ProxyHTML指令并查看返回的内容。如果它不受影响,那么你就知道它与mod_proxy_html有关。

然后看看在ProxyHTMLEnable

下添加此指令
ProxyHTMLFixups off

答案 2 :(得分:0)

你的问题是文档类型定义

<!DOCTYPE html/>

标签不应关闭。它应该是这样的:

<!DOCTYPE html>

mod_proxy_html 尝试通过将其包装在段落中来修复它所看到的额外 > 字符。

相关问题