IBM HTTP Server 帮助:代理伪指令
语法 -ProxyRequests on | off
缺省 -ProxyRequests Off
上下文 -服务器配置,虚拟主机状态 -基本模块 -mod_proxy兼容性 -ProxyRequests 仅可用于 Apache 1.1 及以后版本。
此伪指令允许或阻止 Apache 具有代理服务器的功能。将 ProxyRequests 设置成 'off' 不会禁用 ProxyPass 伪指令。
缺省 -无
语法 -ProxyRemote <match> <remote-server>
上下文 -服务器配置,虚拟主机状态-基本 模块-mod_proxy
兼容性-ProxyRemote 仅可用于 Apache 1.1 及以后版本。
此伪指令定义了到此代理的远程代理。<match> 是远程服务器所支持的 URL 模式名,或使用远程服务器的部分 URL,或 "*" 表明服务器应该联系所有的请求。<remote-server> 是远程服务器的部分 URL。语法:
<remote-server> = <protocol>://<hostname>[:port]
<protocol> 是用于和远程服务器进行通信的协议;此模块仅支持 "http"。
示例:
ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000
ProxyRemote * http://cleversite.com
ProxyRemote ftp http://ftpproxy.mydomain.com:8080
在最后的示例中,代理将转发 FTP 请求,并封装为另一个 HTTP 代理请求,以发送给另一个可以处理它们的代理。
语法 -ProxyPass <path> <url> <path> <url>
上下文 -服务器配置,虚拟主机状态 -基本模块 -mod_proxy兼容性 -ProxyPass 仅可用于 Apache 1.1 及以后版本。
此伪指令允许远程服务器映射到本地服务器的空间中;本地服务器在常规检测中不能作为一个代理,而是以远程服务器的镜像出现。<path> 是本地虚拟路径的名称;<url> 是远程服务器的部分 URL。
假设本地服务器具有地址 http://wibble.org/ ;则
ProxyPass /mirror/foo/ http://foo.com/
将导致 <http://wibble.org/mirror/foo/bar > 的本地请求内部地转换为 <http://foo.com/bar > 的代理请求。
语法 -ProxyPassReverse <path> <url> <path> <url>
上下文 -服务器配置,虚拟主机状态 -基本模块 -mod_proxy兼容性 -ProxyPassReverse 仅可用于 Apache 1.3b6 及以后版本。
此伪指令使 Apache 调整在 HTTP 重定向响应上 Location 报头中的 URL。例如当 Apache 用作逆向代理时,为避免绕过逆向代理,此伪指令是必不可少的,这是因为在后端服务器上的 HTTP 重定向在逆向代理之后。 <Path> 是本地虚拟路径的名称。
<url> 是远程服务器的部分 URL-其用于 ProxyPass 伪指令的相同方法。
示例:
假设本地服务器具有地址 http://wibble.org/ ;则
ProxyPass /mirror/foo/ http://foo.com/
ProxyPassReverse /mirror/foo/ http://foo.com/
不仅将导致 <http://wibble.org/mirror/foo/bar > 本地请求内部地转换成为 <http://foo.com/bar >(由 ProxyPass 功能在此提供)的代理请求。而且还照顾到服务器 foo.com 所发送的重定向:当
http://foo.com/bar 由他重定向到 http://foo.com/quux 时,Apache 将在转发到客户机的 HTTP 重定向响应前,将其调整为 http://wibble.org/mirror/foo/quux 。
注意,此 ProxyPassReverse 伪指令也可以与 mod_rewrite
的 pass-through 功能部件 ("RewriteRule ...[P] ") 联合使用,因为它不取决于相应的 ProxyPass 伪指令。
语法 -AllowCONNECT <port list>
缺省 -AllowCONNECT 443 563
上下文 -服务器配置,虚拟主机状态 -基本模块 -mod_proxy兼容性 -AllowCONNECT 仅可用于 Apache 1.3.2 及以后版本。
AllowCONNECT 伪指令指定了连接代理 CONNECT 方法的端口号列表。现在的浏览器在请求 https 连接,并且穿过 http 的代理有效时,才使用此方法。
缺省情况下,仅启用缺省 https 端口 (443) 和缺省 snews 端口 (563)。使用 AllowCONNECT 伪指令覆盖此缺省,并仅允许连接到所列出的端口。
语法 -ProxyBlock <word/host/domain list>
上下文 -服务器配置,虚拟主机状态 -基本模块 -mod_proxy兼容性 -ProxyBlock 仅可用于 Apache 1.2 及以后版本。
ProxyBlock 伪指令指定了字、主机和/或域的列表,并以空格分隔。到其名称包含匹配字、主机或域的站点的 HTTP、HTTPS 和 FTP 文档请求由代理服务所阻塞 。代理模块也将尝试确定列表项的 IP 地址,这些项可能是启动时的主机名,对它们进行高速缓存以匹配测试。示例:
ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu
如果由 IP 地址引用,则 "rocky.wotsamattau.edu" 也将匹配。
注意,"wotsamattau" 也与 "wotsamattau.edu" 完全匹配。
再注意
ProxyBlock * 阻塞所有站点的连接。
语法 -ProxyReceiveBufferSize <bytes>
上下文 -服务器配置,虚拟主机状态 -基本模块 -mod_proxy兼容性 -ProxyReceiveBufferSize 仅可用于 Apache 1.3 及以后版本。
ProxyReceiveBufferSize 伪指令指定了一个出网 HTTP 和 FTP 连接的显式网络缓冲区大小,用于所增加的吞吐量。它必须大于 512,或设置为 0 以表明使用系统的缺省缓冲区大小。
示例:
ProxyReceiveBufferSize 2048
此伪指令仅对内部网中的 Apache 代理服务器有用。NoProxy 伪指令指定了子网、IP 地址、主机和/或域的列表,并以空格分隔。对与其中一个或多个相匹配的主机请求提供的服务总是直接进行的,而无须转发到所配置的 ProxyRemote 代理服务器。
示例:
ProxyRemote * http://firewall.mycompany.com:81
NoProxy .mycompany.com 192.168.112.0/21
NoProxy 伪指令的参数是下列类型列表中的一个:
Domain
Domain 是一个部分受限的 DNS 域名,由句点开头。它表示一主机列表,这些主机逻辑上属于同一 DNS 域或区域(也就是 ,主机名的后缀全部以 Domain 结束)。
示例:.com .apache.org.
为了分辨 Domain 与 Hostname (从语法和语义两方面;一个 DNS 域也可以有一个 DNS A 记录!),Domain 总是有一个前导的句点。
注:域名比较的完成不考虑大小写,而 Domain 总是假设为固定在 DNS 树的根目录,因此两个域 .MyDomain.com 和 .mydomain.com. (注意结尾的句点)被认为是同一个。由于域比较不涉及 DNS 查找,所以比子网比较更有效。
SubNet
SubNet 是部分受限的因特网地址,以数字(带点的四元组)表示,可选地后跟斜杠和网掩码,指定为 SubNet 中的有效位数。它用于表示可到达公共网络接口的主机子网。在缺少显式网掩码时,假设省略(或取值为零)的结尾数字指定了掩码。(在这种情况下,
网掩码只能 8 位宽。)
示例:
192.168 或 192.168.0.0
子网 192.168.0.0 带一个 16 位有效位的隐式网掩码(有时用网掩码形式 255.255.0.0 )
192.168.112.0/21
子网 192.168.112.0/21 带一个 21 位有效位的网掩码(也使用 255.255.248.0 形式)
在退化的情况下,带 32 位有效位的 SubNet 等价于 IPAddr ,而带零位有效位的 SubNet (例如 ,0.0.0.0/0)等价于常量 _Default_ (与任何 IP 地址相匹配的)。
IPAddr
IPAddr 表示一个全限定的因特网地址,以数字(带点的四元组)表示。通常,此地址表示一台主机,但是不必是一个与此地址连接的 DNS 域名。
示例:192.168.123.7
注:IPAddr 不必由 DNS 系统解析,所以它可带来更有效的 apache 性能。 另见: DNS 问题
Hostname
Hostname 是全限定的 DNS 域名,它可以通过 DNS 域名服务,解析为一个或多个 IPAddrs 。它表示一个逻辑主机(对照 Domain ,请参阅以上所述),并且必须可解析为至少一个 IPAddr (或经常解析为带有不同
IPAddr 的主机列表)。
示例:prep.ai.mit.edu
www.apache.org.
注:在许多情况下,指定 IPAddr 代替 Hostname 更为有效,因为可以避免 DNS 查找。当使用慢速 PPP 链接来连接名称服务器时,Apache 中的名称解析将花费相当长的时间。
注:主机名 比较的完成不考虑大小写,而主机名 总是假设固定在 DNS 树的根目录,因此两个主机 .MyDomain.com 和
.mydomain.com. (注意结尾的句点)被认为是同一个。
另见: DNS 问题
语法 -ProxyDomain <Domain>
上下文 -服务器配置,虚拟主机状态 -基本模块 -mod_proxy兼容性 -ProxyDomain 仅可用于 Apache 1.3 及以后版本。
此伪指令仅对内部网中的 Apache 代理服务器有用。ProxyDomain 伪指令指定了 apache 代理服务器所属的缺省域。如果遇到不带有域名的主机请求,则将生成到带有所配置 Domain 的相同主机的重定向响应。
示例:
ProxyRemote * http://firewall.mycompany.com:81
NoProxy .mycompany.com 192.168.112.0/21
ProxyDomain .mycompany.com
语法 -ProxyVia {off|on|full|block }
缺省 -ProxyVia off
上下文 -服务器配置,虚拟主机状态 -基本模块 -mod_proxy兼容性 -ProxyVia 仅可用于 Apache 1.3.2 及以后版本。
此伪指令控制由代理使用的 Via: HTTP 报头。它的意图是沿着代理服务器链控制代理请求的流动。查看 RFC2068 (HTTP/1.1),以获得 Via: 报头行的解释。
如果设置为缺省的 off ,则将不执行特殊的处理。如果请求或回答包含 Via: 报头,则它将保持不变地通过。 如果设置为 on ,则每个请求和回答将为当前主机获取一个所添加的 Via: 报头行。 如果设置为 full ,则每
个生成的 Via: 报头行将额外地具有 Apache 服务器版本信息,如同 Via: 注解字段所显示的。 如果设置为 block ,则每个代理请求将除去其所有 Via: 报头行。不会生成新的 Via: 报头。
语法 -CacheForceCompletion <percentage>
上下文 -服务器配置,虚拟主机缺省 -90
状态 -基本模块 -mod_proxy兼容性 -CacheForceCompletion 仅可用于 Apache 1.3.1 及以后版本。
如果取消正在高速缓存的 http 传输,而且所指定的百分率已大部分传输完成,则代理模块将完成高速缓存的传输。
这是一个百分率,必须是 1 至 100 间的数, 或是 0 以使用缺省。仅当传输允许完成时,100 才会导致文档的高速缓存。建议使用介于 60 和 90 间的数。
语法 -CacheRoot <directory >
上下文 -服务器配置,虚拟主机
状态 -基本
模块 -mod_proxy
兼容性 -CacheRoot 仅可用于 Apache 1.1 及以后版本。
设置目录名,以包含高速缓存文件;它对于 httpd 服务器必须是可写的。(请参阅
User
伪指令)。
设置 CacheRoot
将启用代理的高速缓存;而无须定义 CacheRoot
,
如果 ProxyRequests
设置为 On
,而高速缓存却不可用,则代理功能将可用。
CacheSize <size >
缺省 -CacheSize 5
上下文 -服务器配置,虚拟主机
状态 -基本
模块 -mod_proxy
兼容性 -CacheSize 仅可用于 Apache 1.1 及以后版本。
设置高速缓存的所期望空间用法,以 KB(1024-字节单位)表示。尽管使用时可能超过这个设置,但无用信息收集将删除一些文件,直到其等于或低于此设置。
根据所预期的代理流量及 CacheGcInterval
,使用至少低于可用空间 20% 到 40% 的值。
语法 -CacheGcInterval <time >
上下文 -服务器配置,虚拟主机
状态 -基本
模块 -mod_proxy
兼容性 -CacheGcInterval 仅可用于 Apache 1.1 及以后版本。
每 <time> 个小时检查一次高速缓存,如果使用空间大于 CacheSize 设置的值,则删除一些文件。注意,此 <time> 接受浮点值,例如您可以使用 CacheGcInterval 1.5
以每 90 分钟检查一次高速缓存。(如果取消设置,将不执行无用信息收集,而高速
缓存将无限制地增长。)还须注意,CacheGcInterval
越大,则超出已配置 CacheSize
(在无用信息收集间隙的高速缓存所需)的额外空间就越多。
语法 -CacheMaxExpire <time >
缺省 -CacheMaxExpire 24
上下文 -服务器配置,虚拟主机
状态 -基本
模块 -mod_proxy
兼容性 -CacheMaxExpire 仅可用于 Apache 1.1 及以后版本。
可高速缓存的 HTTP 文档将最多保留 <time> 个小时,而不检查源服务器。因此,文档最多可过期 <time> 个小时。即使为文档提供了到期日期,但是这个限制仍将实施。
语法 -CacheLastModifiedFactor <factor >
缺省 -CacheLastModifiedFactor 0.1
上下文 -服务器配置,虚拟主机
状态 -基本
模块 -mod_proxy
兼容性 -CacheLastModifiedFactor 仅可用于 Apache 1.1 及以后版本。
如果原始 HTTP server 没有为文档提供到期日期,则使用此公式估计一个
expiry-period = time-since-last-modification * <factor>
例如,如果文档最后的修改是在 10 小时前,而 <factor> 为 0.1,则到期周期将设置为 10*0.1 = 1 小时。
如果到期周期比 CacheMaxExpire 设置的长,则后者优先。
语法 -CacheDirLevels <levels >
缺省 -CacheDirLevels 3
上下文 -服务器配置,虚拟主机
状态 -基本
模块 -mod_proxy
兼容性 -CacheDirLevels 仅可用于 Apache 1.1 及以后版本。
CacheDirLevels 设置了高速缓存中子目录的级别数。高速缓存的数据将保存在 CacheRoot 下的多个目录级中。
语法 -CacheDirLength <length >
缺省 -CacheDirLength 1
上下文 -服务器配置,虚拟主机
状态 -基本
模块 -mod_proxy
兼容性 -CacheDirLength 仅可用于 Apache 1.1 及以后版本。
CacheDirLength 设置了代理高速缓存子目录名中的字符数。
语法 -CacheDefaultExpire <time >
缺省 -CacheDefaultExpire 1
上下文 -服务器配置,虚拟主机
状态 -基本
模块 -mod_proxy
兼容性 -CacheDefaultExpire 仅可用于 Apache 1.1 及以后版本。
如果通过不支持到期时间的协议取得文档,则使用 <time> 个小时作为到期时间。CacheMaxExpire
不 覆盖此设置。
语法 -CacheDefaultExpire <time >
缺省 -CacheDefaultExpire 1
上下文 -服务器配置,虚拟主机
状态 -基本
模块 -mod_proxy
兼容性 -CacheDefaultExpire 仅可用于 Apache 1.1 及以后版本。
NoCache 伪指令指定了字、主机和/或域的列表,并以空格分隔。来自所匹配字、主机或域的 HTTP 和非口令 FTP 文档不能 由代理服务器进行高速缓存。代理模块也将尝试确定列表项的 IP 地址,这些项可能是启动时的主机名,对它们进行高速缓存以匹配测试。示例:
NoCache joes-garage.com some-host.co.uk bullwinkle.wotsamattau.edu
如果由 IP 地址引用,则 "bullwinkle.wotsamattau.edu" 也将匹配。
注意,"wotsamattau" 也与 "wotsamattau.edu" 完全匹配。
再注意
NoCache *
完全禁用高速缓存。