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