📄 httpservice.html
字号:
<?xml version="1.0" encoding="GB2312"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN"><head> <meta http-equiv="Content-Type" content="text/html; charset=GB2312" /> <meta name="keywords" content="electronic commerce, ecommerce, ebusiness, e-business, e-commerce, enterprise software, net economy, Sun Microsystems, Sun Open Net Environment, Sun ONE, internet software" /> <meta name="Description" content="Sun Microsystems, Inc. is delivering Sun ONE e-commerce software and enterprise solutions that enable companies to compete successfully in the Net Economy." /> <meta name="TemplateVersion" content="Sun ONE WDT 2.3.1" /> <meta name="LASTUPDATED" content="10/03/03 09:48:22" /> <meta name="BookTitle" content="Sun Java System Application Server Enterprise Edition 8.1 Administration Guide 2005Q1" /> <title>第 17 章 配置 HTTP 服务</title> <link href="catalog.css" tppabs="http://docs.sun.com/source/819-1553/catalog.css" rel="stylesheet" type="text/css" /> <!-- on load bring this window to front --> <script laguage="javascript"> top.window.focus(); </script></head><body text="#000000" link="#594FBF" vlink="#9966cc" alink="#333366" bgcolor="#FFFFFF"><a name="top"> </a><!-- navigation --> <table width="100%" border="0" cellspacing="4" summary="Header navigation table"> <tr><td> <p class="pNavigation"> <a HREF="javascript:if(confirm('http://www.sun.com/software/ \n\n该文件无法用 Teleport Ultra 下载, 因为 它是一个域或路径外部被设置为它的启始地址的地址。 \n\n你想在服务器上打开它?'))window.location='http://www.sun.com/software/'" tppabs="http://www.sun.com/software/"> <img SRC="Logo.jpg" tppabs="http://docs.sun.com/source/819-1553/Logo.jpg" alt="Sun logo" valign="bottom" border="0" /></a>      <a href="transactions.html" tppabs="http://docs.sun.com/source/819-1553/transactions.html">上一页</a>      <a href="index.html" tppabs="http://docs.sun.com/source/819-1553/index.html">目录</a>      <a href="orb.html" tppabs="http://docs.sun.com/source/819-1553/orb.html">下一页</a>      </p> </td></tr> <tr><td valign="top" align="right" bgcolor="#594FBF"> <span class="cBookTitle">Sun Java System Application Server Enterprise Edition 8.1 管理指南 2005Q1</span> </td></tr> </table><!-- end navigation --><blockquote><!-- chapter content --><a name="wp768533"> </a><h2 class="pChapNumber"><span class="cGray">第 17 章</span><br /><a name="wp768535"> </a>配置 HTTP 服务</h2><a name="wp1069385"> </a><p class="pParagraph">本章介绍了如何为 Application Server 的 HTTP 服务组件配置虚拟服务器和 HTTP 侦听器。</p><div class="pSmartList1"><ul class="pSmartList1"><a name="wp1069389"> </a><div class="pSmartList1"><li><a href="httpservice.html#wp768569" tppabs="http://docs.sun.com/source/819-1553/httpservice.html#wp768569">关于 HTTP 服务</a></li></div><a name="wp1069393"> </a><div class="pSmartList1"><li><a href="httpservice.html#wp768763" tppabs="http://docs.sun.com/source/819-1553/httpservice.html#wp768763">有关 HTTP 服务的管理控制台任务</a></li></div><a name="wp768559"> </a><div class="pSmartList1"><li><a href="httpservice.html#wp769429" tppabs="http://docs.sun.com/source/819-1553/httpservice.html#wp769429">有关 HTTP 侦听器的管理控制台任务</a></li></div><a name="wp768565"> </a><div class="pSmartList1"><li><a href="httpservice.html#wp769228" tppabs="http://docs.sun.com/source/819-1553/httpservice.html#wp769228">有关虚拟服务器的管理控制台任务</a></li></div></ul></div><a name="wp768569"> </a><h2 class="pHeading1"><hr />关于 HTTP 服务</h2><div class="pSmartList1"><ul class="pSmartList1"><a name="wp768575"> </a><div class="pSmartList1"><li><a href="httpservice.html#wp768597" tppabs="http://docs.sun.com/source/819-1553/httpservice.html#wp768597">什么是 HTTP 服务?</a></li></div><a name="wp768581"> </a><div class="pSmartList1"><li><a href="httpservice.html#wp768641" tppabs="http://docs.sun.com/source/819-1553/httpservice.html#wp768641">虚拟服务器</a></li></div><a name="wp768587"> </a><div class="pSmartList1"><li><a href="httpservice.html#wp768697" tppabs="http://docs.sun.com/source/819-1553/httpservice.html#wp768697">HTTP 侦听器</a></li></div></ul></div><a name="wp768597"> </a><h3 class="pHeading2">什么是 HTTP 服务?</h3><a name="wp768607"> </a><p class="pParagraph">HTTP 服务是 Application Server 的一个组件,它提供了一些工具来部署 Web 应用程序,并使 HTTP 客户机可以访问已部署的 Web 应用程序。(请参见<a href="depapp.html#wp831146" tppabs="http://docs.sun.com/source/819-1553/depapp.html#wp831146">部署 Web 应用程序</a>。)这些工具是借助于以下两种相关对象提供的:虚拟服务器和 HTTP 侦听器。</p><a name="wp768641"> </a><h3 class="pHeading2">虚拟服务器</h3><a name="wp768647"> </a><p class="pParagraph">虚拟服务器(有时也称为虚拟主机)是一个允许同一个物理服务器来托管多个 Internet 域名的对象。同一个物理服务器上托管的所有虚拟服务器共享该物理服务器的 Internet 协议 (IP) 地址。虚拟服务器将某个服务器的域名(例如 <code class="cCode">www.aaa.com</code>)与运行 Application Server 的特定服务器关联起来。 </p><a name="wp768649"> </a><p class="pParagraph"><b class="cBold">注:</b>请勿将 Internet 域与 Application Server 的管理域混淆。</p><a name="wp768651"> </a><p class="pParagraph">例如,假设您希望在物理服务器上托管以下这些域:</p><a name="wp768653"> </a><code class="pCodeline">www.aaa.com<br />www.bbb.com<br />www.ccc.com</code><a name="wp768655"> </a><p class="pParagraph">同时假设 www.aaa.com、<code class="cCode">www.bbb.com</code> 和 <code class="cCode">www.ccc.com</code> 都分别具有与之关联的 Web 模块 <code class="cCode">web1</code>、<code class="cCode">web2</code> 和 <code class="cCode">web3</code>。</p><a name="wp768657"> </a><p class="pParagraph">这意味着以下 URL 将全部由您的物理服务器处理:</p><a name="wp768659"> </a><code class="pCodeline">http://www.aaa.com:8080/web1<br />http://www.bbb.com:8080/web2<br />http://www.ccc.com:8080/web3</code><a name="wp768661"> </a><p class="pParagraph">第一个 URL 将被映射到虚拟主机 <code class="cCode">www.aaa.com</code>,第二个 URL 将被映射到虚拟主机 <code class="cCode">www.bbb.com</code>,第三个 URL 将被映射到虚拟主机 <code class="cCode">www.ccc.com</code>。</p><a name="wp768663"> </a><p class="pParagraph">另一方面,由于未向 <code class="cCode">www.bbb.com</code> 注册 <code class="cCode">web3</code>,以下 URL 将导致 404 返回码:</p><a name="wp768665"> </a><code class="pCodeline">http://www.bbb.com:8080/web3</code><a name="wp768667"> </a><p class="pParagraph">要使此映射有效,请确保 <code class="cCode">www.aaa.com</code>、<code class="cCode">www.bbb.com</code> 和 <code class="cCode">www.ccc.com</code> 均可解析为物理服务器的 IP 地址。需要向您的网络的 DNS 服务器注册这些域名。此外,在 UNIX 系统上,应将这些域添加到 <code class="cCode">/etc/hosts</code> 文件中(如果 <code class="cCode">/etc/nsswitch.conf</code> 文件中的 <code class="cCode">hosts</code> 设置包括 <code class="cCode">files</code>)。</p><a name="wp768669"> </a><p class="pParagraph">启动 Application Server 时,将自动启动以下虚拟服务器:</p><div class="pSmartList1"><ul class="pSmartList1"><a name="wp768671"> </a><div class="pSmartList1"><li>名为 <code class="cCode">server</code> 的虚拟服务器,用于托管所有用户定义的 Web 模块</li></div><a name="wp768673"> </a><div class="pSmartList1"><li>名为 <code class="cCode">__asadmin</code> 的虚拟服务器,用于托管所有与管理相关的 Web 模块(特别是管理控制台)。该服务器是一个受限制的服务器,您不能将 Web 模块部署到该虚拟服务器上。</li></div></ul></div><a name="wp768675"> </a><p class="pParagraph">如果是在非生产环境中开发、测试和部署 Web 服务,通常您只需要使用 <code class="cCode">server</code> 虚拟服务器。在生产环境中,其他虚拟服务器可以为用户和客户提供托管工具,这样,尽管只有一个物理服务器,但每个用户和客户好像都有自己的 Web 服务器。</p><a name="wp768697"> </a><h3 class="pHeading2">HTTP 侦听器</h3><a name="wp768699"> </a><p class="pParagraph">每个虚拟服务器都通过一个或多个 HTTP 侦听器来提供服务器与客户机之间的连接。每个 HTTP 侦听器都是包含 IP 地址、端口号、服务器名和默认虚拟服务器的侦听套接字。</p><a name="wp768701"> </a><p class="pParagraph">HTTP 侦听器必须有唯一的端口号和 IP 地址的组合。例如,通过将 IP 地址指定为 0.0.0.0,HTTP 侦听器可以在计算机的给定端口上侦听所有的已配置 IP 地址。或者,HTTP 侦听器可以为每个侦听器指定唯一的 IP 地址,但使用相同的端口。</p><a name="wp768703"> </a><p class="pParagraph">由于 HTTP 侦听器是 IP 地址和端口号的组合,因此您可以拥有多个 IP 地址相同但端口号不同(如 1.1.1.1:8081 和 1.1.1.1:8082)的 HTTP 侦听器,或 IP 地址不同但端口号相同(如 1.1.1.1:8081 和 1.2.3.4:8081)的 HTTP 侦听器(如果已将计算机配置为可以响应这些地址)。 </p><a name="wp768705"> </a><p class="pParagraph">但是,如果 HTTP 侦听器使用 0.0.0.0 IP 地址侦听某个端口上的所有 IP 地址,则不能使用其他 IP 地址创建用于侦听同一端口上的特定 IP 地址的 HTTP 侦听器。例如,如果 HTTP 侦听器使用 0.0.0.0:8080(端口 8080 上的所有 IP 地址),则其他 HTTP 侦听器不能使用 1.2.3.4:8080。</p><a name="wp768707"> </a><p class="pParagraph">由于运行 Application Server 的系统通常只能访问一个 IP 地址,因此 HTTP 侦听器通常使用 0.0.0.0 IP 地址和不同的端口号,其中每个端口号用于不同目的。如果系统可以访问多个 IP 地址,则每个地址可以用于不同目的。</p><a name="wp768709"> </a><p class="pParagraph">默认情况下,Application Server 启动时,它具有以下 HTTP 侦听器:</p><div class="pSmartList1"><ul class="pSmartList1"><a name="wp768711"> </a><div class="pSmartList1"><li>两个分别名为 <code class="cCode">http-listener-1</code> 和 <code class="cCode">http-listener-2</code> 的 HTTP 侦听器,这两个侦听器与名为 <code class="cCode">server</code> 的虚拟服务器相关联。名为 <code class="cCode">http-listener-1</code> 的侦听器未启用安全性;而名为 <code class="cCode">http-listener-2</code> 的侦听器启用了安全性。 </li></div><a name="wp768713"> </a><div class="pSmartList1"><li>名为 <code class="cCode">admin-listener</code> 的 HTTP 侦听器,该侦听器与名为 <code class="cCode">__asadmin</code> 的虚拟服务器相关联。该侦听器已启用安全性。</li></div></ul></div><a name="wp768715"> </a><p class="pParagraph">所有这些侦听器均使用 IP 地址 0.0.0.0 和在安装 Application Server 过程中被指定为 HTTP 服务器端口号的端口号。如果 Application Server 使用默认端口号值,则 <code class="cCode">http-listener-1</code> 使用端口 8080,<code class="cCode">http-listener-2</code> 使用端口 8181,<code class="cCode">admin-listener</code> 使用端口 4849。 </p><a name="wp768719"> </a><p class="pParagraph">每个 HTTP 侦听器均有一个默认虚拟服务器。当请求 URL 的主机部分与 HTTP 侦听器关联的任何虚拟服务器(在虚拟服务器的 <code class="cCode">http-listeners</code> 属性中列出 HTTP 侦听器,即可将虚拟服务器与该 HTTP 侦听器关联起来)均不匹配时,HTTP 侦听器会将请求 URL 路由到默认虚拟服务器。 </p><a name="wp768723"> </a><p class="pParagraph">此外,还应在 HTTP 侦听器中指定接收器线程的数目。接收器线程就是等待连接的线程。它们用于接收连接并将其置于队列(称为连接队列)中,以便随后由工作线程拾取连接。您需要配置足够多的接收器线程,以便在新请求传入时始终有一个可用的线程,但是,线程数目不能过多,否则会占用过多的系统资源。连接队列中既包括接收器线程刚刚接收的新连接又包括由保持活动连接管理子系统管理的持久性连接。</p><a name="wp768727"> </a><p class="pParagraph">一组请求处理线程将从连接队列中检索传入的 HTTP 请求并处理这些请求。这些线程将解析 HTTP 头、选择相应的虚拟服务器并通过请求处理引擎以处理请求。如果没有更多要处理的请求,但连接可以保持持久性(通过使用 HTTP/1.1 或发送 <code class="cCode">Connection:keep-alive</code> 标头),请求处理线程将假定连接处于空闲状态,并将连接传递给保持活动连接管理子系统。</p><a name="wp768731"> </a><p class="pParagraph">保持活动子系统将定期轮询此类空闲连接,并在连接队列中对那些活动的连接进行排队,以便将来进行处理。请求处理线程将再次从连接队列中检索连接并处理其请求。保持活动子系统是多线程的,可以管理大约数万个连接。通过将大量连接分成较小的子集,使用有效的轮询技术来确定哪些连接已就绪并具有请求,以及哪些连接由于处于空闲状态的时间较长而被视为已关闭(超过允许的保持活动超时的最大值)。</p><a name="wp768733"> </a><p class="pParagraph">HTTP 侦听器的服务器名就是在重定向过程中由服务器发送给客户机的 URL 中使用的主机名。此属性会影响服务器自动生成的 URL,但不会影响存储在服务器中的目录和文件的 URL。如果服务器使用别名,则此名称通常为别名。如果客户机发送了一个 <code class="cCode">Host:</code>标题,则在重定向中该主机名将取代 HTTP 侦听器的服务器名。 </p><a name="wp768735"> </a><p class="pParagraph">要使用不同于原始请求中指定的端口号的端口号,请指定重定向端口。如果出现以下某一种情况,则会发生<em class="cEmphasis">重定向</em>:</p><div class="pSmartList1"><ul class="pSmartList1"><a name="wp768737"> </a><div class="pSmartList1"><li>如果客户机尝试访问已不存在于指定 URL 处的资源(即该资源已被移动到其他位置),服务器将返回一个指定的响应代码,并在响应的位置标头中包含新的位置,从而将客户机重定向到新位置(而不是返回 404)。</li></div><a name="wp768739"> </a><div class="pSmartList1"><li>如果客户机尝试通过常规 HTTP 端口访问受保护(例如 SSL)的资源,则服务器会将此请求重定向到启用了 SSL 的端口上。在此情况下,服务器将在位置响应标头中返回一个新的 URL,其中的原始非安全性端口已被替换为启用了 SSL 的端口。客户机随后将连接到这个新的 URL。</li></div></ul></div><a name="wp768741"> </a><p class="pParagraph">此外,还应指定是否为 HTTP 侦听器启用安全性以及使用哪种类型的安全性(如使用哪一个 SSL 协议以及哪些加密算法)。</p><a name="wp768743"> </a><p class="pParagraph">要访问部署在 Application Server 上的 Web 应用程序,请使用 URL <code class="cCode">http://localhost:8080/</code>(或者,如果是安全应用程序,则使用 <code class="cCode">http://localhost:8181/</code>)和为此 Web 应用程序指定的上下文根路径。要访问管理控制台,请使用 URL <code class="cCode">https://localhost:4849/</code> 或 <code class="cCode">https://localhost:4849/asadmin/</code>(其默认上下文根路径)。</p><a name="wp768745"> </a><p class="pParagraph">由于虚拟服务器必须指定一个现有的 HTTP 侦听器,并且不能指定其他虚拟服务器已使用的 HTTP 侦听器,因此在创建新的虚拟服务器之前,应至少创建一个 HTTP 侦听器。</p><a name="wp768763"> </a><h2 class="pHeading1"><hr />有关 HTTP 服务的管理控制台任务</h2><div class="pSmartList1"><ul class="pSmartList1"><a name="wp768769"> </a><div class="pSmartList1"><li><a href="httpservice.html#wp768783" tppabs="http://docs.sun.com/source/819-1553/httpservice.html#wp768783">配置 HTTP 服务</a></li></div><a name="wp768775"> </a><div class="pSmartList1"><li><a href="httpservice.html#wp768867" tppabs="http://docs.sun.com/source/819-1553/httpservice.html#wp768867">配置 HTTP 服务访问日志</a></li></div></ul></div><a name="wp768783"> </a><h3 class="pHeading2">配置 HTTP 服务</h3><a name="wp768785"> </a><p class="pParagraph">要配置 HTTP 服务,请执行以下步骤:</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -