描述: | 重写HTML链接,以确保可在代理上下文中从客户端的网络寻址它们。 |
---|---|
状态: | 基础 |
模块标识符: | proxy_html_module |
源文件: | mod_proxy_html.c |
兼容性: | 2.4版及更高版本。作为早期2.x版本的第三方模块提供 |
此模块提供输出过滤器,以在代理情况下重写HTML链接,以确保链接对代理外部的用户有效。它的作用与Apache ProxyPassReverse
指令对HTTP标头的作用相同,并且是反向代理的重要组成部分。
例如,如果公司的应用程序服务器
appserver.example.com
仅在公司内部网络中可见,而公共Web服务器仅在公共网络服务器中可见
www.example.com
,则他们可能希望在处提供到该应用程序服务器的网关http://www.example.com/appserver/
。当应用程序服务器链接到其自身时,需要重写这些链接以通过网关工作。mod_proxy_html
用于重写
<a href="http://appserver.example.com/foo/bar.html">foobar</a>
以
<a href="http://www.example.com/appserver/foo/bar.html">foobar</a>
使其可以从外部访问。
mod_proxy_html最初是由Webing开发的,其大量文档可能对用户有用。
描述: | 设置用于缓冲内联脚本和样式表的缓冲区大小增量。 |
---|---|
句法: | ProxyHTMLBufSize bytes |
默认: | ProxyHTMLBufSize 8192 |
内容: | 服务器配置,虚拟主机,目录 |
状态: | 基础 |
模块: | mod_proxy_html |
兼容性: | 2.4及更高版本;作为早期版本2.x的第三方提供 |
为了解析嵌入在HTML文档中的非HTML内容(样式表和脚本),mod_proxy_html
必须将整个脚本或样式表读取到缓冲区中。该缓冲区将根据需要扩展以容纳页面中最大的脚本或样式表,以该指令设置的字节为增量。
默认值为8192,几乎适用于所有页面。但是,如果您知道要代理的页面包含样式表和/或大于8K的脚本(也就是说,对于单个脚本或样式表,不是总和),则设置更大的缓冲区大小将更加有效,从而避免了需要在请求期间动态调整缓冲区的大小。
描述: | 为mod_proxy_html输出指定一个字符集。 |
---|---|
句法: | ProxyHTMLCharsetOut Charset | * |
内容: | 服务器配置,虚拟主机,目录 |
状态: | 基础 |
模块: | mod_proxy_html |
兼容性: | 2.4及更高版本;作为早期版本2.x的第三方提供 |
这将为mod_proxy_html输出选择一种编码。通常不应该使用它,因为对默认值UTF-8
(Unicode-libxml2内部使用)的任何更改都会带来额外的处理开销。特殊令牌ProxyHTMLCharsetOut *
将使用与输入相同的编码来生成输出。
请注意,这依赖于mod_xml2enc
加载。
描述: | 设置HTML或XHTML文档类型声明。 |
---|---|
句法: | ProxyHTMLDocType HTML|XHTML [Legacy] |
内容: | 服务器配置,虚拟主机,目录 |
状态: | 基础 |
模块: | mod_proxy_html |
兼容性: | 2.4及更高版本;作为早期版本2.x的第三方提供 |
在第一种形式中,根据所选选项,文档将被声明为HTML 4.01或XHTML 1.0。此选项还确定是将HTML还是XHTML语法用于输出。请注意,来自后端服务器的文档格式无关紧要:解析器将自动处理它。如果将第二个可选参数设置为
Legacy
,则文档将被声明为“过渡的”,如果您代理1998年之前的内容或使用有缺陷的创作/发布工具,则此选项可能是必需的。
在第二种形式中,它将插入您自己的FPI。可选的第二个参数确定将使用SGML / HTML还是XML / XHTML语法。
默认设置更改为忽略任何FPI,因为没有FPI比伪造的FPI好。如果您的后端生成了不错的HTML或XHTML,请相应地进行设置。
如果使用第一种形式,则mod_proxy_html还将清理HTML到指定的标准。它不能解决所有错误,但是会去除伪造的元素和属性。它还可以选择在LogLevel
调试时记录其他错误。
描述: | 打开或关闭proxy_html过滤器。 |
---|---|
句法: | ProxyHTMLEnable On|Off |
默认: | ProxyHTMLEnable Off |
内容: | 服务器配置,虚拟主机,目录 |
状态: | 基础 |
模块: | mod_proxy_html |
兼容性: | 2.4及更高版本;作为早期2.x版本的第三方模块提供。 |
一个简单的开关,用于启用或禁用proxy_html过滤器。如果mod_xml2enc
已加载,还将自动设置国际化支持。
请注意,proxy_html过滤器仅对HTML数据(内容类型text / html或application / xhtml + xml)和代理数据起作用。您可以通过设置PROXY_HTML_FORCE环境变量来覆盖此方法(后果自负)。
描述: | 指定将属性视为脚本事件。 |
---|---|
句法: | ProxyHTMLEvents attribute [attribute ...] |
内容: | 服务器配置,虚拟主机,目录 |
状态: | 基础 |
模块: | mod_proxy_html |
兼容性: | 2.4及更高版本;作为早期版本2.x的第三方提供 |
指定一个或多个属性,将其视为脚本事件并将应用于ProxyHTMLURLMap
启用的位置。您可以在一个或多个ProxyHTMLEvents
指令中指定任意数量的属性
。
通常,您将在全局范围内进行设置。如果您ProxyHTMLEvents
在一个以上的范围中进行设置,以便一个覆盖另一个,则需要在每个这些范围中指定一个完整的集合。
proxy-html.conf中提供了默认配置, 并在标准HTML 4和XHTML 1中定义了事件。
描述: | 确定是否修复内联脚本,样式表和脚本事件中的链接。 |
---|---|
句法: | ProxyHTMLExtended On|Off |
默认: | ProxyHTMLExtended Off |
内容: | 服务器配置,虚拟主机,目录 |
状态: | 基础 |
模块: | mod_proxy_html |
兼容性: | 2.4及更高版本;作为早期版本2.x的第三方提供 |
设置为Off
,HTML链接将根据ProxyHTMLURLMap
指令进行重写
,但是Javascript和CSS中出现的链接将被忽略。
设置为On
,所有脚本事件(由决定
ProxyHTMLEvents
)和嵌入的脚本或样式表也将由ProxyHTMLURLMap
规则根据为每个规则设置的标志进行处理。由于这需要更多的解析,因此,只有在严格必要时才启用它才能获得最佳性能。
您还需要注意匹配的模式,因为解析器不知道嵌入式脚本或样式表中的URL是什么。特别是,的扩展匹配/
可能会导致错误匹配。
描述: | 修复了简单的HTML错误。 |
---|---|
句法: | ProxyHTMLFixups [lowercase] [dospath] [reset] |
内容: | 服务器配置,虚拟主机,目录 |
状态: | 基础 |
模块: | mod_proxy_html |
兼容性: | 2.4及更高版本;作为早期版本2.x的第三方提供 |
该指令采用一到三个参数,如下所示:
lowercase
网址改写为小写dospath
URL中的反斜杠将被重写为正斜杠。reset
取消配置中更高级别设置的任何选项。使用这些时要小心。这些修补程序将纠正某些创作错误,但也有可能错误地修复了开头正确的链接。仅当知道后端服务器损坏时才使用它们。
描述: | 启用每个请求的ProxyHTMLURLMap 规则插值
。 |
---|---|
句法: | ProxyHTMLInterp On|Off |
默认: | ProxyHTMLInterp Off |
内容: | 服务器配置,虚拟主机,目录 |
状态: | 基础 |
模块: | mod_proxy_html |
兼容性: | 2.4及更高版本;作为早期2.x版本的第三方模块提供 |
这样就可以按请求ProxyHTMLURLMap
和源模式插入每个请求
。
如果未启用插值,则将在启动时预编译所有规则。使用插值时,必须为每个请求重新编译它们,这意味着额外的处理开销。因此,仅应在必要时启用它。
描述: | 指定具有要重写的URL属性的HTML元素。 |
---|---|
句法: | ProxyHTMLLinks element attribute [attribute2 ...] |
内容: | 服务器配置,虚拟主机,目录 |
状态: | 基础 |
模块: | mod_proxy_html |
兼容性: | 2.4及更高版本;作为早期版本2.x的第三方提供 |
指定具有URL属性的元素,应使用standard重写这些元素ProxyHTMLURLMap
。ProxyHTMLLinks
每个元素只需要一个指令,但是它可以具有任意数量的属性。
通常,您将在全局范围内进行设置。如果您ProxyHTMLLinks
在一个以上的范围中进行设置,以便一个覆盖另一个,则需要在每个这些范围中指定一个完整的集合。
proxy-html.conf中提供了默认配置, 并定义了标准HTML 4和XHTML 1的HTML链接。
ProxyHTMLLinks a href ProxyHTMLLinks area href ProxyHTMLLinks link href ProxyHTMLLinks img src longdesc usemap ProxyHTMLLinks object classid codebase data usemap ProxyHTMLLinks q cite ProxyHTMLLinks blockquote cite ProxyHTMLLinks ins cite ProxyHTMLLinks del cite ProxyHTMLLinks form action ProxyHTMLLinks input src usemap ProxyHTMLLinks head profile ProxyHTMLLinks base href ProxyHTMLLinks script src for
描述: | 打开或关闭HTML <head> 部分中元数据的额外预解析
。 |
---|---|
句法: | ProxyHTMLMeta On|Off |
默认: | ProxyHTMLMeta Off |
内容: | 服务器配置,虚拟主机,目录 |
状态: | 基础 |
模块: | mod_proxy_html |
兼容性: | 2.4及更高版本;作为早期2.x版本的第三方模块提供。 |
这将打开或关闭HTML <head>
部分中元数据的预解析
。
如果不需要,关闭ProxyHTMLMeta可以跳过此解析步骤,从而对性能有所提升。但是,有时国际化必须正常工作。
ProxyHTMLMeta
有两个作用。首先,最重要的是,它可以检测以以下形式声明的字符编码
<meta http-equiv="Content-Type" content="text/html;charset=foo">
或者,对于XHTML文档,则为XML声明。如果字符集是在后端服务器的真实HTTP标头中声明的(总是首选),则不需要,也不需要文档是utf-8(unicode)或诸如ASCII之类的子集。在文档使用使用声明的默认值的情况下xml2EncDefault
,您也可以省去它,但这可能会传播错误的声明。A ProxyHTMLCharsetOut
可以消除这种风险,但与启用ProxyHTMLMeta相比,可能会带来更大的处理开销。
启用的另一个效果ProxyHTMLMeta
是解析所有
<meta http-equiv=...>
声明,并将它们转换为真实的HTTP标头,这与HTML <meta>元素的这种形式的初衷是一致的。
http-equiv
元素提升为HTTP标头,所以仅当您信任HTML内容以及信任上游服务器时才启用它,这一点很重要。如果HTML由不良行为者控制,则他们可能会向服务器的响应中注入任意的,可能是恶意的HTTP标头。
描述: | 确定是否删除HTML注释。 |
---|---|
句法: | ProxyHTMLStripComments On|Off |
默认: | ProxyHTMLStripComments Off |
内容: | 服务器配置,虚拟主机,目录 |
状态: | 基础 |
模块: | mod_proxy_html |
兼容性: | 2.4及更高版本;作为早期版本2.x的第三方提供 |
该指令将导致mod_proxy_html剥离HTML注释。请注意,这也将杀死注释中嵌入的所有脚本或样式(1995年6月与Netscape 2引入的一种怪癖,是为了使当时的浏览器受益,但仍在使用)。它还可能会干扰基于注释的处理器,例如SSI或ESI:如果要删除注释,请确保在过滤器链中运行mod_proxy_html 之前的任何处理器!
描述: | 定义重写HTML链接的规则 |
---|---|
句法: | ProxyHTMLURLMap from-pattern to-pattern [flags] [cond] |
内容: | 服务器配置,虚拟主机,目录 |
状态: | 基础 |
模块: | mod_proxy_html |
兼容性: | 2.4及更高版本;作为早期2.x版本的第三方模块提供。 |
这是重写HTML链接的关键指令。解析文档时,只要链接目标匹配from-pattern,匹配的部分都将被重写为to-pattern,并通过提供的任何标志和
ProxyHTMLExtended
伪指令进行修改。仅使用ProxyHTMLLinks
指令指定的元素将被视为HTML链接。
可选的第三个参数可以定义以下任何 Flags。标志区分大小写。
忽略HTML链接(不更改地传递)
忽略脚本事件(通过原样传递)
完整地传递嵌入式脚本和样式部分。
最后一场比赛。如果此规则匹配,则不再应用任何规则(请注意,这对于HTML链接会自动发生)。
与L相反。使用HTML链接覆盖一次更改的默认行为。
使用正则表达式匹配和替换。 from-pattern
是一个正则表达式,以及to-pattern
一个可能基于该正则表达式的替换字符串。支持正则表达式内存:您可以在中使用方括号(),from-pattern
并在中检索$ 1至$ 9的匹配项to-pattern
。
如果未设置R,它将使用字符串字面量的搜索和替换。逻辑从 HTML链接开始,但 包含在脚本事件以及嵌入式脚本和样式节中。
使用POSIX扩展正则表达式。仅适用于R。
不区分大小写的匹配。仅适用于R。
禁用正则表达式内存(用于速度)。仅适用于R。
基于行的正则表达式匹配。仅适用于R。
仅在开始比赛。这仅适用于字符串匹配(不适用于正则表达式),与HTML链接无关。
仅在末尾比赛。这仅适用于字符串匹配(不适用于正则表达式),与HTML链接无关。
在.NET中插值环境变量to-pattern
。形式的字符串${varname|default}
将由环境变量的值替换varname
。如果未设置,则将其替换为default
。该|default
是可选的。
注意:如果插才会启用
ProxyHTMLInterp
是在。
在.NET中插值环境变量from-pattern
。支持的模式如上所述。
注意:如果插才会启用
ProxyHTMLInterp
是在。
可选的第四个cond参数定义一个条件(如果设置ProxyHTMLInterp
为On,将根据每个请求进行评估)
。如果条件评估为FALSE,则该地图将不会应用于此请求。如果为TRUE,或者未定义任何条件,则应用映射。
甲COND由评估表达式分析器。此外,还支持针对HTTPD 2.0和2.2的mod_proxy_html 3.x中的条件的更简单语法。