Sun Java System Application Server 9.1 高可用性管理指南

在负载平衡器中使用重定向

使用重定向可将请求从一个 URL 重定向到另一个 URL。例如,使用重定向将用户发送到其他 Web 站点(例如,从旧版本的应用程序重定向到较新版本的应用程序),或者从 HTTP 重定向到 HTTPS 或从 HTTPS 重定向到 HTTP。在应用程序中可按多种方式启用重定向(例如,基于 servlet 的重定向、web.xml 重定向)。不过,通过负载平衡器发送重定向 URL 可能需要对 Application Server 或负载平衡器进行一些其他配置。请注意,重定向与使用 HTTPS 路由选择转发的请求不同。使用重定向时,请将 httpsrouting 设置为 False。如果将 HTTPS 请求配置为转发到 HTTP,请使用 HTTPS 路由选择

以下属性将影响重定向:HTTP 服务或 HTTP 侦听器的 authPassthroughEnabled 属性和 proxyHandler 属性,以及 loadbalancer.xml 文件中的 rewrite-location 属性。

authPassthroughEnabled 属性

当 Application Server authPassthroughEnabled 属性设置为 True 时,有关原始客户机请求的信息(如客户机 IP 地址、SSL 密钥大小和已认证的客户机证书链)将通过使用自定义请求标头发送到 HTTP 侦听器。如果安装了硬件加速器,authPassThroughEnabled 属性允许您使用硬件加速器来进行更快速的 SSL 验证。在负载平衡器中配置硬件加速器比在每个群集 Application Server 实例中配置硬件加速器更为容易。


注意 – 注意 –

仅当 Application Server 位于防火墙之后时,才将 authPassthroughEnabled 设置为 True。


使用 asadmin set 命令在 HTTP 服务或单个 HTTP 侦听器中设置 authPassthroughEnabled 属性。单个 HTTP 侦听器的设置优先于 HTTP 服务的设置。

要在所有 HTTP/HTTPS 侦听器上设置 authPassthroughEnabled 属性,请使用以下命令:

asadmin set cluster-name-config.http-service.property.authPassthroughEnabled=true

要在单个侦听器上设置该属性,请使用以下命令:

asadmin set cluster-name-config.http-service.http-listener. listener-name.property.authPassthroughEnabled=true

proxyHandler 属性

Application Server 的代理处理程序负责检索有关代理服务器(在本例中,为负载平衡器)拦截并转发给 Application Server 的原始客户机请求的信息,并负责使该信息可供作为客户机请求的目标部署在 Application Server 中的 Web 应用程序使用。如果进行拦截的代理服务器是 SSL 终止代理服务器,则代理处理程序将检索有关原始请求的其他信息(如原始请求是否为 HTTPS 请求,以及是否启用了 SSL 客户机验证),并使这些信息可用。仅当将 authPassThroughEnabled 设置为 True 时才使用 proxyHandler 属性。

代理处理程序将在接收到的请求中检查自定义请求标头,这样,代理服务器即可传送有关原始客户机请求的信息,并使此信息可供使用标准 ServletRequest API 的 Application Server 中的 Web 应用程序使用。

代理处理程序实现是可配置的,可以使用 proxyHandler 属性在 HTTP 服务级别全局配置,也可以针对单个 HTTP 侦听器进行配置。proxyHandler 属性的值指定 com.sun.appserv.ProxyHandler 抽象类实现的完全限定类名。只要代理处理程序实现知道 HTTP 请求标头名称,并且了解其值的格式,可配置的代理处理程序实现就允许 Application Server 与任何代理服务器协同工作,这样,代理服务器便可以传送有关原始客户机请求的信息。

Application Server 的代理处理程序将从该请求标头中读取并解析 SSL 证书链。这将允许后端应用服务器实例检索 SSL 终止代理服务器(在本例中,为负载平衡器)拦截的原始客户机请求的有关信息。您可以使用默认的代理处理程序设置,也可以使用 HTTP 服务或 HTTP/HTTPS 侦听器的 proxyHandler 属性自行配置。proxyHandler 属性可用于指定该侦听器或全部侦听器使用的 com.sun.appserv.ProxyHandler 抽象类的自定义实现的完全限定类名。

此抽象类的实现将在给定请求中检查自定义请求标头,这样,代理服务器可将有关原始客户机请求的信息传送至 Application Server 实例,并将该信息返回给其调用方。默认实现将从名为 Proxy-ip 的 HTTP 请求标头中读取客户机 IP 地址,从名为 Proxy-keysize 的 HTTP 请求标头中读取 SSL 密钥大小,并从名为 Proxy-auth-cert 的 HTTP 请求标头中读取 SSL 客户机证书链。Proxy-auth-cert 值必须包含 BASE-64 编码的客户机证书链且无 BEGIN CERTIFICATE 和 END CERTIFICATE 边界,并将 \n 替换为 % d% a

仅当 authPassThroughEnabled 设置为 True 时才可以使用此属性。如果在单个 HTTP 或 HTTPS 侦听器中设置 proxyHandler 属性,则它将覆盖所有侦听器的默认设置。

可使用 asadmin set 命令在 HTTP 服务或在单个 HTTP 侦听器中设置 proxyHandler 属性。

要在所有 HTTP/HTTPS 侦听器中设置 proxyHandler 属性,请使用以下命令:

asadmin set cluster-name-config.http-service.property.proxyHandler= classname

要在单个侦听器上设置该属性,请使用以下命令:

asadmin set cluster-name-config.http-service.http-listener. listener-name.property.proxyHandler= classname

rewrite-location 属性

如果 rewrite-location 属性设置为 True,则它将重写原始请求信息,并会包括协议(HTTP 或 HTTPS)、主机和端口信息。默认情况下,会将 rewrite-location 属性设置为 True,以便保持与以前 Application Server 版本的向后兼容性。

不能通过 asasmin create-http-lb-config 命令或 asadmin set 命令来使用 rewrite-location 属性。要使用该属性,请在导出负载平衡器配置后将其手动添加到 loadbalancer.xml 文件中。例如,将以下内容添加到导出的 loadbalancer.xml 文件中:

<property name="rewrite-location" value="false"/>

设置 rewrite-location 属性时,请记住以下几点: