Sun Java System Web Proxy Server 4.0.8 管理指南

反向代理的工作方式

您可以使用两种不同方法进行反向代理。一种方法利用 Proxy Server 的安全性功能来处理事务。另一种方法使用高速缓存在高用量服务器上提供负载平衡。这两种方法均有别于惯用的代理用法,因为它们并不严格在防火墙上运行。

代理充当服务器的替身

如果您的内容服务器具有必须保持安全的敏感信息(如信用卡号数据库),可在防火墙外部设置一个代理作为内容服务器的替身。当外部客户机试图访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。

当客户机向站点提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通路将结果回传给代理。代理将检索到的信息发送给客户机,就像代理是实际的内容服务器一样,如图 14–1 中所示。如果内容服务器返回错误消息,代理服务器可截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。这种措施可防止外部客户机获取内部内容服务器的重定向 URL。

通过这种方式,代理就在安全数据库和可能存在的恶意攻击之间提供了另一道屏障。如果侥幸攻击成功,作恶者充其量也仅限于访问单个事务中所涉及的信息,而不至于获得整个数据库的访问权。未经授权的用户无法到达真正的内容服务器,因为防火墙通路仅允许代理服务器有权进行访问。

图 14–1 反向代理过程

图中所示的反向代理就像是内容服务器。

您可以配置防火墙路由器,使其只允许特定端口上的特定服务器(在本例中为其所分配端口上的代理)有权通过防火墙进行访问,而不允许任何其他计算机进出。

安全反向代理

当代理服务器与其他计算机之间的一个或多个连接使用安全套接字层 (Secure Sockets Layer, SSL) 协议加密数据时,将会进行安全反向代理。

安全反向代理具有许多用途:

由于加密数据时占用开销,因此安全反向代理将会降低各安全连接的速度。但是,因为 SSL 提供了高速缓存机制,所以连接双方可以重复使用先前协商的安全性参数,从而大大降低了后续连接的开销。

配置安全反向代理的方法有三种:

图 14–2 客户机安全连接到代理

图中说明客户机安全连接到代理。

图 14–3 代理安全连接到内容服务器

图中说明代理安全连接到内容服务器。

图 14–4 客户机安全连接到代理并且代理安全连接到内容服务器

图中说明客户机安全连接到代理并且代理安全连接到内容服务器。

有关如何设置上述每种配置的信息,请参见设置反向代理

除了 SSL 之外,代理还可以使用客户机验证,这种方法要求向代理提出请求的计算机提供证书或其他形式的标识以验证其身份。

负载平衡代理

您可以在组织中使用多个代理服务器来平衡 Web 服务器之间的网络负载。此模型将利用代理服务器的高速缓存功能创建一个用于负载平衡的服务器池。在这种情况下,代理服务器可以位于防火墙的任意一侧。如果 Web 服务器每天都会收到大量请求,则可以使用代理服务器分担 Web 服务器的负载并提高网络访问效率。

代理服务器充当发往真正服务器的客户机请求的媒介。代理服务器会高速缓存所请求的文档。如果有多个代理服务器,DNS 可以采用“循环复用法”选择其 IP 地址,随机地为请求选择路由。客户机每次都使用同一个 URL,但请求所采取的路由每次都可能经过不同的代理。

使用多个代理来处理对某个高用量内容服务器的请求的优点在于,该服务器可以处理更繁重的负载,并且比其独自处理时的效率更高。在初始启动期间,代理首次从内容服务器检索文档,此后,对内容服务器的请求数会大大下降。

只有 CGI 请求和偶发的新请求必须一路直达内容服务器。其余的请求可以由代理进行处理。例如,假定对服务器的请求中有 90% 都不是 CGI 请求(这表示它们可以进行高速缓存),而且内容服务器每天都会被命中 2 百万次。在此情况下,如果连接三个反向代理,并且每个代理每天处理 2 百万次命中,则每天将能够处理大约 6 百万次命中。请求中有 10% 到达内容服务器,合计约为每个代理每天 200,000 次命中,即总数仅为 600,000 次,从而大大提高效率。命中次数可从约 2 百万次增加到 6 百万次,而内容服务器的负载可相应地从 2 百万次减少到 600,000 次。实际结果依具体情况而定。

图 14–5 用于负载平衡的代理

图中说明了用于负载平衡的代理,其中所有请求都转到一个中心 DNS 服务器,该服务器可将这些请求路由至任何代理服务器。