IBM HTTP Server 帮助:代理伪指令

代理伪指令

 

ProxyRequests

此伪指令允许或阻止 Apache 具有代理服务器的功能。将 ProxyRequests 设置成 'off' 不会禁用 ProxyPass 伪指令。

ProxyRemote

此伪指令定义了到此代理的远程代理。<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> 是远程服务器的部分 URL。

假设本地服务器具有地址 http://wibble.org/;则

   ProxyPass         /mirror/foo/ http://foo.com/
将导致 <http://wibble.org/mirror/foo/bar> 的本地请求内部地转换为 <http://foo.com/bar> 的代理请求。

ProxyPassReverse

此伪指令使 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

AllowCONNECT 伪指令指定了连接代理 CONNECT 方法的端口号列表。现在的浏览器在请求 https 连接,并且穿过 http 的代理有效时,才使用此方法。
缺省情况下,仅启用缺省 https 端口 (443) 和缺省 snews 端口 (563)。使用 AllowCONNECT 伪指令覆盖此缺省,并仅允许连接到所列出的端口。

ProxyBlock

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

ProxyReceiveBufferSize 伪指令指定了一个出网 HTTP 和 FTP 连接的显式网络缓冲区大小,用于所增加的吞吐量。它必须大于 512,或设置为 0 以表明使用系统的缺省缓冲区大小。

示例:

  ProxyReceiveBufferSize 2048

NoProxy

此伪指令仅对内部网中的 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.
为了分辨 DomainHostname(从语法和语义两方面;一个 DNS 域也可以有一个 DNS A 记录!),Domain 总是有一个前导的句点。
注:域名比较的完成不考虑大小写,而 Domain 总是假设为固定在 DNS 树的根目录,因此两个域 .MyDomain.com.mydomain.com.(注意结尾的句点)被认为是同一个。由于域比较不涉及 DNS 查找,所以比子网比较更有效。
SubNet
SubNet 是部分受限的因特网地址,以数字(带点的四元组)表示,可选地后跟斜杠和网掩码,指定为 SubNet 中的有效位数。它用于表示可到达公共网络接口的主机子网。在缺少显式网掩码时,假设省略(或取值为零)的结尾数字指定了掩码。(在这种情况下, 网掩码只能 8 位宽。)
示例:
192.168192.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

此伪指令仅对内部网中的 Apache 代理服务器有用。ProxyDomain 伪指令指定了 apache 代理服务器所属的缺省域。如果遇到不带有域名的主机请求,则将生成到带有所配置 Domain 的相同主机的重定向响应。

示例:

  ProxyRemote  *  http://firewall.mycompany.com:81
  NoProxy         .mycompany.com 192.168.112.0/21 
  ProxyDomain     .mycompany.com

ProxyVia

此伪指令控制由代理使用的 Via: HTTP 报头。它的意图是沿着代理服务器链控制代理请求的流动。查看 RFC2068 (HTTP/1.1),以获得 Via: 报头行的解释。

CacheForceCompletion

如果取消正在高速缓存的 http 传输,而且所指定的百分率已大部分传输完成,则代理模块将完成高速缓存的传输。

这是一个百分率,必须是 1 至 100 间的数, 或是 0 以使用缺省。仅当传输允许完成时,100 才会导致文档的高速缓存。建议使用介于 60 和 90 间的数。

CacheRoot

设置目录名,以包含高速缓存文件;它对于 httpd 服务器必须是可写的。(请参阅 User 伪指令)。
设置 CacheRoot 将启用代理的高速缓存;而无须定义 CacheRoot, 如果 ProxyRequests 设置为 On,而高速缓存却不可用,则代理功能将可用。

CacheSize

设置高速缓存的所期望空间用法,以 KB(1024-字节单位)表示。尽管使用时可能超过这个设置,但无用信息收集将删除一些文件,直到其等于或低于此设置。

根据所预期的代理流量及 CacheGcInterval,使用至少低于可用空间 20% 到 40% 的值。

CacheGcInterval

每 <time> 个小时检查一次高速缓存,如果使用空间大于 CacheSize 设置的值,则删除一些文件。注意,此 <time> 接受浮点值,例如您可以使用 CacheGcInterval 1.5 以每 90 分钟检查一次高速缓存。(如果取消设置,将不执行无用信息收集,而高速 缓存将无限制地增长。)还须注意,CacheGcInterval 越大,则超出已配置 CacheSize(在无用信息收集间隙的高速缓存所需)的额外空间就越多。

CacheMaxExpire

可高速缓存的 HTTP 文档将最多保留 <time> 个小时,而不检查源服务器。因此,文档最多可过期 <time> 个小时。即使为文档提供了到期日期,但是这个限制仍将实施。

CacheLastModifiedFactor

如果原始 HTTP server 没有为文档提供到期日期,则使用此公式估计一个

  expiry-period = time-since-last-modification * <factor>
例如,如果文档最后的修改是在 10 小时前,而 <factor> 为 0.1,则到期周期将设置为 10*0.1 = 1 小时。

如果到期周期比 CacheMaxExpire 设置的长,则后者优先。

CacheDirLevels

CacheDirLevels 设置了高速缓存中子目录的级别数。高速缓存的数据将保存在 CacheRoot 下的多个目录级中。

CacheDirLength

CacheDirLength 设置了代理高速缓存子目录名中的字符数。

CacheDefaultExpire

如果通过不支持到期时间的协议取得文档,则使用 <time> 个小时作为到期时间。CacheMaxExpire 覆盖此设置。

NoCache

NoCache 伪指令指定了字、主机和/或域的列表,并以空格分隔。来自所匹配字、主机或域的 HTTP 和非口令 FTP 文档不能由代理服务器进行高速缓存。代理模块也将尝试确定列表项的 IP 地址,这些项可能是启动时的主机名,对它们进行高速缓存以匹配测试。示例:

  NoCache joes-garage.com some-host.co.uk bullwinkle.wotsamattau.edu
如果由 IP 地址引用,则 "bullwinkle.wotsamattau.edu" 也将匹配。

注意,"wotsamattau" 也与 "wotsamattau.edu" 完全匹配。

再注意

NoCache *
完全禁用高速缓存。