Sun Java System Application Server Enterprise Edition 8.2 管理指南

第 12 章 配置 HTTP 服务

HTTP 服务是 Application Server 的一个组件,它提供了用于部署 Web 应用程序的工具和使 HTTP 客户机可以访问已部署 Web 应用程序的工具。HTTP 服务借助于两种相关对象(虚拟服务器和 HTTP 侦听器)来提供这些工具。

本章讨论以下主题:

虚拟服务器

虚拟服务器(有时也称为虚拟主机)是一个允许同一个物理服务器来托管多个域名的对象。同一个物理服务器上托管的所有虚拟服务器共享该物理服务器的 Internet 协议 (Internet Protocol, IP) 地址。虚拟服务器将某个服务器的域名(例如 www.aaa.com)与运行 Application Server 的特定服务器关联起来。


注 –

请勿将 Internet 域与 Application Server 的管理域相混淆。


例如,假设您希望在物理服务器上托管以下这些域:

www.aaa.com
www.bbb.com
www.ccc.com

同时假设 www.aaa.comwww.bbb.comwww.ccc.com 分别将 Web 模块 web1web2web3 与之关联起来。

这意味着以下 URL 将全部由您的物理服务器处理:

http://www.aaa.com:8080/web1
http://www.bbb.com:8080/web2
http://www.ccc.com:8080/web3

第一个 URL 将被映射到虚拟主机 www.aaa.com,第二个 URL 将被映射到虚拟主机 www.bbb.com,第三个 URL 将被映射到虚拟主机 www.ccc.com

另一方面,由于未向 www.bbb.com 注册 web3,以下 URL 将导致 404 返回码:

http://www.bbb.com:8080/web3

要使此映射有效,请确保 www.aaa.comwww.bbb.comwww.ccc.com 均可解析为物理服务器的 IP 地址。需要向您网络的 DNS 服务器注册这些域名。此外,在 UNIX 系统上,应将这些域添加到 /etc/hosts 文件中(如果 /etc/nsswitch.conf 文件中的 hosts 设置包括 files)。

Application Server 启动时,将自动启动以下虚拟服务器:

如果是在非生产环境中开发、测试和部署 Web 服务,通常只需使用 server 虚拟服务器。在生产环境中,其他虚拟服务器可以为用户和客户提供托管工具,这样,尽管只有一个物理服务器,但每个用户和客户好像都有自己的服务器。

HTTP 侦听器

每个虚拟服务器都通过一个或多个 HTTP 侦听器来提供服务器与客户机之间的连接。每个 HTTP 侦听器都是包含 IP 地址、端口号、服务器名和默认虚拟服务器的侦听套接字。

HTTP 侦听器必须有唯一的端口号和 IP 地址的组合。例如,HTTP 侦听器可以通过将 IP 地址指定为 0.0.0.0,在计算机的给定端口侦听所有已配置的 IP 地址。HTTP 侦听器还可以为每个侦听器指定唯一的 IP 地址,但使用同一个端口。

由于 HTTP 侦听器是 IP 地址和端口号的组合,因此您可以拥有多个 IP 地址相同而端口号不同的 HTTP 侦听器(例如,1.1.1.1:8081 和 1.1.1.1:8082),或 IP 地址不同而端口号相同的 HTTP 侦听器(例如,1.1.1.1:8081 和 1.2.3.4:8081,如果已将计算机配置为可以响应这两个地址)。

但是,如果 侦听器使用 0.0.0.0 IP 地址侦听某个端口上的所有 IP 地址,则不能使用其他 IP 地址创建用于侦听同一端口上的特定 IP 地址的 HTTP 侦听器。例如,如果 HTTP 侦听器使用 0.0.0.0:8080(端口 8080 上的所有 IP 地址),则其他 HTTP 侦听器不能使用 1.2.3.4:8080。

由于运行 Application Server 的系统通常只能访问一个 IP 地址,因此 HTTP 侦听器通常使用 0.0.0.0 IP 地址和不同的端口号,其中每个端口号用于不同目的。如果系统可以访问多个 IP 地址,则每个地址可以用于不同目的。

默认情况下,Application Server 启动时,具有以下 HTTP 侦听器:

所有这些侦听器均使用 IP 地址 0.0.0.0 和在安装 Application Server 过程中被指定为 HTTP 服务器端口号的端口号。如果 Application Server 使用默认端口号值,则 http-listener-1 使用端口 8080,http-listener-2 使用端口 8181,admin-listener 使用端口 4849。

每个 HTTP 侦听器都有一个默认虚拟服务器。当请求 URL 的主机组件与任何 HTTP 侦听器关联虚拟服务器(在虚拟服务器的 http-listeners 属性中列出 HTTP 侦听器,即可将虚拟服务器与该 HTTP 侦听器相关联)均不匹配时,HTTP 侦听器会将所有请求 URL 路由到默认虚拟服务器。

此外,还应指定 HTTP 侦听器中的接收器线程数。接收器线程就是等待连接的线程。它们用于接受连接并将其置于队列(称为连接队列)中,以便随后由工作线程拾取。您需要配置足够多的接收器线程,以便在新请求传入时始终有一个可用的线程,但是,线程数目不能过多,否则会占用过多的系统资源。连接队列中既包括接收器线程刚刚接受的新连接,又包括由保持活动连接管理子系统管理的持久性连接。

一组请求处理线程将从连接队列中检索传入的 HTTP 请求并处理这些请求。这些线程将解析 HTTP 头、选择相应的虚拟服务器并通过请求处理引擎以处理请求。如果没有更多要处理的请求,但连接可以保持持久性(通过使用 HTTP/1.1 或发送 Connection: keep-alive 标头),请求处理线程将假定连接处于空闲状态,并将连接传递给保持活动连接管理子系统。

保持活动子系统将定期轮询此类空闲连接,并将活动的连接排队到连接队列中,以便将来进行处理。请求处理线程将再次从连接队列中检索连接并处理其请求。保持活动子系统是多线程的,可以管理大约数万个连接。通过将大量连接分成较小的子集,使用有效的轮询技术来确定哪些连接已就绪并具有请求,以及哪些连接由于处于空闲状态的时间较长而被视为已关闭(超过允许的保持活动超时的最大值)。

HTTP 侦听器的服务器名就是在重定向过程中由服务器发送给客户机的 URL 中使用的主机名。此属性会影响服务器自动生成的 URL,但不会影响存储在服务器中的目录和文件的 URL。如果服务器使用别名,则此名称通常为别名。如果客户机发送了一个 Host: 标头,则在重定向过程中,该主机名将取代 HTTP 侦听器的服务器名值。

要使用不同于原始请求中指定的端口号的端口号,请指定重定向端口。如果出现以下情况之一,就会发生重定向

此外,还应指定是否为 HTTP 侦听器启用安全性以及使用哪种类型的安全性(如使用哪一个 SSL 协议以及哪些加密算法)。

要访问部署在 Application Server 上的 Web 应用程序,请使用 URL http://localhost:8080/(或 https://localhost:8181/,如果此应用程序是安全的)以及为该 Web 应用程序指定的上下文根路径。要访问管理控制台,请使用 URL https://localhost:4849/https://localhost:4849/asadmin/(其默认上下文根路径)。

由于虚拟服务器必须指定一个现有的 HTTP 侦听器,并且不能指定其他虚拟服务器已使用的 HTTP 侦听器,因此在创建新的虚拟服务器之前,应至少创建一个 HTTP 侦听器。