每个虚拟服务器都通过一个或多个 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 侦听器:
两个分别名为 http-listener-1 和 http-listener-2 的 HTTP 侦听器,这两个侦听器与名为 server 的虚拟服务器相关联。名为 http-listener-1 的侦听器未启用安全性;而名为 http-listener-2 的侦听器启用了安全性。
名为 admin-listener 的 HTTP 侦听器,该侦听器与名为 __asadmin 的虚拟服务器相关联。该侦听器已尚未启用安全性。
所有这些侦听器均使用 IP 地址 0.0.0.0 和在安装 Application Server 过程中被指定为 HTTP 服务器端口号的端口号。如果 Application Server 使用默认端口号值,则 http-listener-1 使用端口 8080,http-listener-2 使用端口 8181,admin-listener 使用端口 48489。
每个 HTTP 侦听器都有一个默认虚拟服务器。当请求 URL 的主机组件与任何 HTTP 侦听器关联虚拟服务器(在虚拟服务器的 http-listeners 属性中列出 HTTP 侦听器,即可将虚拟服务器与该 HTTP 侦听器相关联)均不匹配时,HTTP 侦听器会将所有请求 URL 路由到默认虚拟服务器。
此外,还应指定 HTTP 侦听器中的接收器线程数。接收器线程就是等待连接的线程。它们用于接受连接并将其置于队列(称为连接队列)中,以便随后由工作线程拾取。您需要配置足够多的接收器线程,以便在新请求传入时始终有一个可用的线程,但是,线程数目不能过多,否则会占用过多的系统资源。在 Application Server 中,接收器线程和请求处理(工作)线程之间没有区别:每个 HTTP 侦听器线程负责接受和处理请求。由于此原因,Application Server 的默认配置中的 HTTP 侦听器使用 50 个接收器线程。连接队列中既包括接收器线程刚刚接受的新连接又包括由保持活动连接管理子系统管理的持久性连接。
一组请求处理线程将从连接队列中检索传入的 HTTP 请求并处理这些请求。这些线程将解析 HTTP 头、选择相应的虚拟服务器并通过请求处理引擎以处理请求。如果没有更多要处理的请求,但连接可以保持持久性(通过使用 HTTP/1.1 或发送 Connection: keep-alive 标头),请求处理线程将假定连接处于空闲状态,并将连接传递给保持活动连接管理子系统。
保持活动子系统将定期轮询此类空闲连接,并将活动的连接排队到连接队列中,以便将来进行处理。请求处理线程将再次从连接队列中检索连接并处理其请求。保持活动子系统是多线程的,可以管理大约数万个连接。通过将大量连接分成较小的子集,使用有效的轮询技术来确定哪些连接已就绪并具有请求,以及哪些连接由于处于空闲状态的时间较长而被视为已关闭(超过允许的保持活动超时的最大值)。
HTTP 侦听器的服务器名就是在重定向过程中由服务器发送给客户机的 URL 中使用的主机名。此属性会影响服务器自动生成的 URL,但不会影响存储在服务器中的目录和文件的 URL。如果服务器使用别名,则此名称通常为别名。如果客户机发送了一个 Host: 标头,则在重定向过程中,该主机名将取代 HTTP 侦听器的服务器名值。
要使用不同于原始请求中指定的端口号的端口号,请指定重定向端口。如果出现以下情况之一,就会发生重定向:
如果客户机尝试访问指定 URL 处已不存在的资源(即该资源已被移动到其他位置),服务器将返回一个指定的响应代码,并在响应的位置标头中包含新的位置,从而将客户机重定向到新位置(而不是返回 404)。
如果客户机尝试通过常规 HTTP 端口访问受保护(如 SSL)的资源,则服务器会将此请求重定向到启用了 SSL 的端口。在这种情况下,服务器将在位置响应标头中返回一个新 URL,其中原始的不安全端口已被替换为启用了 SSL 的端口。客户机随后将连接到这个新的 URL。
此外,还应指定是否为 HTTP 侦听器启用安全性以及使用哪种类型的安全性(如使用哪一个 SSL 协议以及哪些加密算法)。
要访问部署在 Application Server 上的 Web 应用程序,请使用 URL http://localhost:8080/(或 https://localhost:8181/,如果此应用程序是安全的)以及为该 Web 应用程序指定的上下文根路径。要访问管理控制台,请使用 URL https://localhost:4848/ 或 http://localhost:4848/asadmin/(其默认上下文根路径)。
由于虚拟服务器必须指定一个现有的 HTTP 侦听器,并且不能指定其他虚拟服务器已使用的 HTTP 侦听器,因此在创建新的虚拟服务器之前,应至少创建一个 HTTP 侦听器。