|
以下部分描述如何将 HTTP 请求代理到其他 Web 服务器:
将 WebLogic Server 作为主 Web 服务器使用时,可能还需要配置 WebLogic Server,以便将某些请求传递或代理到次级 Web 服务器,如 Netscape Enterprise Server、Apache 或 Microsoft Internet Information Server。所代理的任何请求都会重定向到特定 URL。您甚至可代理到其他计算机上的另一个 Web 服务器。您将根据传入请求的 URL 代理请求。
HttpProxyServlet(作为分发的一部分提供)获取 HTTP 请求,将其重定向到代理 URL,然后通过 WebLogic Server 将响应发送回对客户端浏览器。要使用 HttpProxyServlet,必须在 Web 应用程序中对其进行配置,然后在要重定向请求的 WebLogic Server 上部署该 Web 应用程序。
proxy Servlet(请参阅使用 ProxyServlet 的示例 web.xml)。该 Web 应用程序必须是要对请求进行响应的服务器实例的默认 Web 应用程序。代理 Servlet 的类名为 weblogic.servlet.proxy.HttpProxyServlet。有关详细信息,请参阅开发 WebLogic Server 的 Web 应用程序、Servlet 和 JSP。redirectURL的 <param-name>和一个包含所代理请求应定向到的服务器 URL 的 <param-value>,定义 ProxyServlet的初始化参数。<KeyStore> 初始化参数,以便通过您自己的标识证书和密钥使用双向 SSL。如果未在部署描述符中指定 <KeyStore>,则代理将采用单向 SSL。<KeyStore> - Web 应用程序中的密钥库位置。<KeyStoreType> - 密钥库类型。如果未对其进行定义,则将改用默认类型。<PrivateKeyAlias> - 私钥别名。<KeyStorePasswordProperties> - Web 应用程序中的属性文件,定义用于访问密钥库和私钥别名的加密密码。文件内容类似如下所示:
KeyStorePassword={3DES}i4+50LCKenQO8BBvlsXTrg\=\=
PrivateKeyPassword={3DES}a4TcG4mtVVBRKtZwH3p7yA\=\=
要对密码加密,必须使用 weblogic.security.Encrypt 命令行实用工具。有关 Encrypt 实用工具以及 CertGen 和 der2pem 实用工具的详细信息,请参阅“WebLogic Server 命令参考”中的使用 WebLogic Server Java 实用工具。
ProxyServlet 映射到 <url-pattern>。特别是要映射希望代理的文件的扩展名,如 *.jsp或 *.html。在 web.xml Web 应用程序部署描述符中使用 <servlet-mapping> 元素。
如果将 <url-pattern> 设置为“/”,则 WebLogic Server 不能解析的任何请求都会代理到远程服务器。但是,如果要代理以下扩展名结尾的文件,还必须专门映射这些扩展名:*.jsp、*.html 和 *.html。
下面是使用代理 Servlet 的 Web 应用程序部署描述符的一个示例。
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.
//DTD Web Application 2.3//EN""http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>ProxyServlet</servlet-name>
<servlet-class>weblogic.servlet.proxy.HttpProxyServlet</servlet-class>
<init-param>
<param-name>redirectURL</param-name>
<param-value>server:port</param-value>
</init-param>
<init-param><param-name>KeyStore</param-name><param-value>/mykeystore</param-value></init-param>
<init-param><param-name>KeyStoreType</param-name><param-value>jks</param-value></init-param>
<init-param><param-name>PrivateKeyAlias</param-name><param-value>passalias</param-value></init-param>
<init-param><param-name>KeyStorePasswordProperties</param-name><param-value>mykeystore.properties</param-value></init-param>
</servlet>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
|