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

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