?? 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 + -