<-
Apache HTTP 服务器 2.4 > Apache模块mod_proxy_html

Apache模块mod_proxy_html

描述:重写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开发的,其大量文档可能对用户有用。

支持Apache!

指令

错误修正清单

也可以看看

最佳

ProxyHTMLBufSize 指令

描述:设置用于缓冲内联脚本和样式表的缓冲区大小增量。
句法:ProxyHTMLBufSize bytes
默认:ProxyHTMLBufSize 8192
内容:服务器配置,虚拟主机,目录
状态:基础
模块:mod_proxy_html
兼容性:2.4及更高版本;作为早期版本2.x的第三方提供

为了解析嵌入在HTML文档中的非HTML内容(样式表和脚本),mod_proxy_html 必须将整个脚本或样式表读取到缓冲区中。该缓冲区将根据需要扩展以容纳页面中最大的脚本或样式表,以该指令设置的字节为增量。

默认值为8192,几乎适用于所有页面。但是,如果您知道要代理的页面包含样式表和/或大于8K的脚本(也就是说,对于单个脚本或样式表,不是总和),则设置更大的缓冲区大小将更加有效,从而避免了需要在请求期间动态调整缓冲区的大小。

最佳

ProxyHTMLCharsetOut 指令

描述:为mod_proxy_html输出指定一个字符集。
句法:ProxyHTMLCharsetOut Charset | *
内容:服务器配置,虚拟主机,目录
状态:基础
模块:mod_proxy_html
兼容性:2.4及更高版本;作为早期版本2.x的第三方提供

这将为mod_proxy_html输出选择一种编码。通常不应该使用它,因为对默认值UTF-8 (Unicode-libxml2内部使用)的任何更改都会带来额外的处理开销。特殊令牌ProxyHTMLCharsetOut * 将使用与输入相同的编码来生成输出。

请注意,这依赖于mod_xml2enc加载。

最佳

ProxyHTMLDocType 指令

描述:设置HTML或XHTML文档类型声明。
句法:ProxyHTMLDocType HTML|XHTML [Legacy]
OR
ProxyHTMLDocType fpi [SGML|XML]
内容:服务器配置,虚拟主机,目录
状态:基础
模块: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调试时记录其他错误。

最佳

ProxyHTMLEnable 指令

描述:打开或关闭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 指令

描述:指定将属性视为脚本事件。
句法:ProxyHTMLEvents attribute [attribute ...]
内容:服务器配置,虚拟主机,目录
状态:基础
模块:mod_proxy_html
兼容性:2.4及更高版本;作为早期版本2.x的第三方提供

指定一个或多个属性,将其视为脚本事件并将应用于ProxyHTMLURLMap启用的位置。您可以在一个或多个ProxyHTMLEvents指令中指定任意数量的属性 。

通常,您将在全局范围内进行设置。如果您ProxyHTMLEvents在一个以上的范围中进行设置,以便一个覆盖另一个,则需要在每个这些范围中指定一个完整的集合。

proxy-html.conf中提供了默认配置, 并在标准HTML 4和XHTML 1中定义了事件。

最佳

ProxyHTML扩展 指令

描述:确定是否修复内联脚本,样式表和脚本事件中的链接。
句法:ProxyHTMLExtended On|Off
默认:ProxyHTMLExtended Off
内容:服务器配置,虚拟主机,目录
状态:基础
模块:mod_proxy_html
兼容性:2.4及更高版本;作为早期版本2.x的第三方提供

设置为Off,HTML链接将根据ProxyHTMLURLMap指令进行重写 ,但是Javascript和CSS中出现的链接将被忽略。

设置为On,所有脚本事件(由决定 ProxyHTMLEvents)和嵌入的脚本或样式表也将由ProxyHTMLURLMap 规则根据为每个规则设置的标志进行处理。由于这需要更多的解析,因此,只有在严格必要时才启用它才能获得最佳性能。

您还需要注意匹配的模式,因为解析器不知道嵌入式脚本或样式表中的URL是什么。特别是,的扩展匹配/可能会导致错误匹配。

最佳

ProxyHTMLFixups 指令

描述:修复了简单的HTML错误。
句法:ProxyHTMLFixups [lowercase] [dospath] [reset]
内容:服务器配置,虚拟主机,目录
状态:基础
模块:mod_proxy_html
兼容性:2.4及更高版本;作为早期版本2.x的第三方提供

该指令采用一到三个参数,如下所示:

使用这些时要小心。这些修补程序将纠正某些创作错误,但也有可能错误地修复了开头正确的链接。仅当知道后端服务器损坏时才使用它们。

最佳

ProxyHTMLInterp 指令

描述:启用每个请求的ProxyHTMLURLMap规则插值 。
句法:ProxyHTMLInterp On|Off
默认:ProxyHTMLInterp Off
内容:服务器配置,虚拟主机,目录
状态:基础
模块:mod_proxy_html
兼容性:2.4及更高版本;作为早期2.x版本的第三方模块提供

这样就可以按请求ProxyHTMLURLMap和源模式插入每个请求 。

如果未启用插值,则将在启动时预编译所有规则。使用插值时,必须为每个请求重新编译它们,这意味着额外的处理开销。因此,仅应在必要时启用它。

最佳

ProxyHTMLLinks 指令

描述:指定具有要重写的URL属性的HTML元素。
句法:ProxyHTMLLinks element attribute [attribute2 ...]
内容:服务器配置,虚拟主机,目录
状态:基础
模块:mod_proxy_html
兼容性:2.4及更高版本;作为早期版本2.x的第三方提供

指定具有URL属性的元素,应使用standard重写这些元素ProxyHTMLURLMapProxyHTMLLinks每个元素只需要一个指令,但是它可以具有任意数量的属性。

通常,您将在全局范围内进行设置。如果您ProxyHTMLLinks在一个以上的范围中进行设置,以便一个覆盖另一个,则需要在每个这些范围中指定一个完整的集合。

proxy-html.conf中提供了默认配置, 并定义了标准HTML 4和XHTML 1的HTML链接。

proxy-html.conf中的示例

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
最佳

ProxyHTMLMeta 指令

描述:打开或关闭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>元素的这种形式的初衷是一致的。

警告

因为ProxyHTMLMeta会将所有 http-equiv元素提升为HTTP标头,所以仅当您信任HTML内容以及信任上游服务器时才启用它,这一点很重要。如果HTML由不良行为者控制,则他们可能会向服务器的响应中注入任意的,可能是恶意的HTTP标头。
最佳

ProxyHTMLStripComments 指令

描述:确定是否删除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 之前的任何处理器!

最佳

ProxyHTMLURLMap 指令

描述:定义重写HTML链接的规则
句法:ProxyHTMLURLMap from-pattern to-pattern [flags] [cond]
内容:服务器配置,虚拟主机,目录
状态:基础
模块:mod_proxy_html
兼容性:2.4及更高版本;作为早期2.x版本的第三方模块提供。

这是重写HTML链接的关键指令。解析文档时,只要链接目标匹配from-pattern,匹配的部分都将被重写为to-pattern,并通过提供的任何标志和 ProxyHTMLExtended伪指令进行修改。仅使用ProxyHTMLLinks指令指定的元素将被视为HTML链接。

可选的第三个参数可以定义以下任何 Flags。标志区分大小写。

H

忽略HTML链接(不更改地传递)

Ë

忽略脚本事件(通过原样传递)

C

完整地传递嵌入式脚本和样式部分。

大号

最后一场比赛。如果此规则匹配,则不再应用任何规则(请注意,这对于HTML链接会自动发生)。

与L相反。使用HTML链接覆盖一次更改的默认行为。

[R

使用正则表达式匹配和替换。 from-pattern 是一个正则表达式,以及to-pattern一个可能基于该正则表达式的替换字符串。支持正则表达式内存:您可以在中使用方括号(),from-pattern并在中检索$ 1至$ 9的匹配项to-pattern

如果未设置R,它将使用字符串字面量的搜索和替换。逻辑 HTML链接开始,但 包含在脚本事件以及嵌入式脚本和样式节中。

X

使用POSIX扩展正则表达式。仅适用于R。

一世

不区分大小写的匹配。仅适用于R。

ñ

禁用正则表达式内存(用于速度)。仅适用于R。

s

基于行的正则表达式匹配。仅适用于R。

^

仅在开始比赛。这仅适用于字符串匹配(不适用于正则表达式),与HTML链接无关。

$

仅在末尾比赛。这仅适用于字符串匹配(不适用于正则表达式),与HTML链接无关。

V

在.NET中插值环境变量to-pattern。形式的字符串${varname|default}将由环境变量的值替换varname。如果未设置,则将其替换为default。该|default是可选的。

注意:如果插才会启用 ProxyHTMLInterp

v

在.NET中插值环境变量from-pattern。支持的模式如上所述。

注意:如果插才会启用 ProxyHTMLInterp

可选的第四个cond参数定义一个条件(如果设置ProxyHTMLInterpOn,将根据每个请求进行评估) 。如果条件评估为FALSE,则该地图将不会应用于此请求。如果为TRUE,或者未定义任何条件,则应用映射。

COND由评估表达式分析器。此外,还支持针对HTTPD 2.0和2.2的mod_proxy_html 3.x中的条件的更简单语法。

可用语言: zh  |  fr 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。