Sun ONE Web Server 6.1 管理員指南 |
第 13 章
使用虛擬伺服器本章解釋了使用 Sun ONE Web Server 設定和管理虛擬伺服器的方式。
本章包含下列小節:
虛擬伺服器簡介使用虛擬伺服器時,您可以藉由單一安裝的伺服器為公司或個人提供領域名稱、IP 位址以及某些伺服器監視功能。對於使用者而言,雖然您提供了硬體和基本 Web 伺服器維護,但看起來使用者好像使用的是自己的 Web 伺服器。
備註 如果您未使用虛擬伺服器,則仍可以使用 Class Manager 中的項目來配置您 Web 伺服器實例的內容、程式和其他功能。安裝 Web 伺服器時,即會建立該實例的預設虛擬伺服器。您可以使用虛擬伺服器使用者介面來管理此預設虛擬伺服器的內容和服務。
若要設定虛擬伺服器,您需要設定下列內容:
虛擬伺服器的設定儲存在 server_root/server_ID/config 目錄下的 server.xml 檔案中。無需編輯此檔案就可使用虛擬伺服器,但您可以對其進行編輯。如果要進一步瞭解此檔案以及如何編輯它,請參閱「Sun ONE Web Server 6.1 Administrator's Configuration File Reference」。
本節包括下列主題:
多個伺服器實例
在 Sun ONE Web Server 的先前發行版本中,虛擬伺服器的唯一配置資訊不太靈活。經常有使用者為了直接能讓伺服器具有單獨的配置資訊而建立單獨的伺服器實例。6.0 版的 Sun ONE Web Server 為每個虛擬伺服器類別引入了單獨配置資訊。雖然仍支援多個伺服器實例,但是如果您的目標是讓許多伺服器具有單獨的配置資訊,則虛擬伺服器是個更佳選擇。
虛擬伺服器類別
虛擬伺服器被群組為類別。使用類別可以同時配置相似的虛擬伺服器,因此您不必單獨配置每個虛擬伺服器。雖然一個類別中的所有虛擬伺服器共用相同的基本配置資訊,但是您也可以對每個虛擬伺服器設定變數和變更配置。如果您不想讓虛擬伺服器共用配置資訊,則可以針對每個虛擬伺服器類別建立單一虛擬伺服器。但是,如果您的虛擬伺服器共用相似的特性,則可以將其群組到某個類別中並一起對其進行配置。
例如,如果您為網際網路服務提供者 (ISP),想要為不同客戶以不同價位提供不同層級的主機服務,則可以為客戶設定數個虛擬伺服器類別。您可以為一個虛擬伺服器類別啟用 Java Servlet 和 JSP,而為較便宜的虛擬伺服器類別停用 Java Servlet 和 JSP。
您可以透過命名虛擬伺服器類別和設定文件根來建立虛擬伺服器類別,其中屬於該類別的所有虛擬伺服器均將依預設具有其文件根。您可以使用 $id 變數,以便該類別內的每個虛擬伺服器都將在該類別的文件根內具有單獨的文件根。如需更多資訊,請參閱文件根。
建立虛擬伺服器類別後,可以將服務與其相關聯。您可以為虛擬伺服器類別開啟或配置下列類型的服務:
obj.conf 檔案
一個類別內的所有虛擬伺服器共用一個 obj.conf 檔案,該檔案儲存關於虛擬伺服器類別的資訊。其中一些資訊儲存在變數中,這樣個別伺服器可具有被快速取代的特定變數值。
如需有關 obj.conf 和變數的更多資訊,請參閱「NSAPI Programmer's Guide」。如需有關在使用者介面中使用變數的更多資訊,請參閱使用變數。
類別中的虛擬伺服器
屬於某個類別的虛擬伺服器稱為該類別的成員。有些虛擬伺服器設定是為類別中的所有虛擬伺服器配置的,而有些則是個別配置的。這些設定在 Class Manager 的 [Virtual Servers] 標籤中配置。如需更多資訊,請參閱第 14 章「建立與配置虛擬伺服器」。
預設類別
安裝 Sun ONE Web Server 時,安裝程式會自動建立單一類別,稱為 defaultclass。依預設,它包含您伺服器實例的一個虛擬伺服器成員。雖然您可將其他虛擬伺服器增加至預設類別,但是無法從該類別刪除您的預設虛擬伺服器。您也無法刪除預設類別。
偵聽套接字
伺服器與用戶端的連線發生在偵聽套接字上。您建立的每個偵聽套接字都有 IP 位址、連接埠號、伺服器名稱以及預設虛擬伺服器。如果您想讓偵聽套接字在機器給定連接埠上的所有已配置 IP 位址上進行偵聽,請為 IP 位址使用 0.0.0.0、any、ANY 或 INADDR_ANY。
安裝 Sun ONE Web Server 時,將自動建立一個偵聽套接字 ls1。該偵聽套接字使用 IP 位址 0.0.0.0 以及您在安裝期間指定的作為 HTTP 伺服器連接埠號的連接埠號 (預設為 80)。您無法刪除預設的偵聽套接字。如果您未使用虛擬伺服器,則此一個偵聽套接字就足夠了。但是如果在使用虛擬伺服器,則您可能要為虛擬伺服器建立多個偵聽套接字。
由於偵聽套接字為 IP 位址與連接埠號的組合,因此您的多個偵聽套接字可以使用相同的 IP 位址和不同的連接埠號,或者使用不同的 IP 位址和相同的連接埠號。例如,您可以使用 1.1.1.1:81 和 1.1.1.1:82。另外,只要將您的機器配置為回應兩個位址的狀態,您便可使用 1.1.1.1:81 和 1.2.3.4:81。
另外,您可以指定偵聽套接字中接收器執行緒 (有時稱為接收執行緒) 的數目。接收器執行緒是等待連線的執行緒。執行緒接受連線並將其放入佇列中,在佇列中將由工作者執行緒接受這些連線。理想的做法為,您想擁有足夠多的接受執行緒,以便在發生新的請求時總有一個可用,但又需要數目相當少,以免給系統造成太重負擔。預設值為 1。最佳規則是讓系統上的每個 CPU 有一個接受執行緒。如果您發現效能受到損害,可以調整此值。
虛擬伺服器
若要建立虛擬伺服器,您必須首先決定將其歸於哪個類別。然後,您需要決定所需的虛擬伺服器類型。若要建立虛擬伺服器,您需指定的僅僅為虛擬伺服器 ID、一台或多台 URL 主機。
本節包括下列主題:
虛擬伺服器類型
在 6.0 版之前的 Sun ONE Web Server 中,有兩種虛擬伺服器:硬體虛擬伺服器和軟體虛擬伺服器。硬體虛擬伺服器具有與其關聯的唯一 IP 位址。軟體虛擬伺服器沒有唯一的 IP 位址,但卻具有唯一的 URL 主機。
在 Sun ONE Web Server 6.0 和 Sun ONE Web Server 6.1 中,這些概念不再十分準確。所有虛擬伺服器都有指定的 URL 主機。但是,虛擬伺服器也可能與基於其偵聽套接字的 IP 位址關聯。
發生新的請求時,伺服器會依據 IP 位址或 Host 標頭中的值,決定將請求傳送至哪個虛擬伺服器。它會首先評估 IP 位址。如需更多資訊,請參閱用於請求處理的虛擬伺服器選取。
基於 IP 位址的虛擬伺服器
若要讓單個電腦具有多重 IP 位址,您必須透過作業系統對映這些位址,或者提供其他卡。若要透過作業系統設定多重 IP 位址,請使用網路控制台 (Windows) 或 ifconfig 公用程式 (UNIX/Linux)。請注意,對於不同的平台,使用 ifconfig 的指示也不同。請參考作業系統文件以取得更多資訊。
通常,透過建立一個於特定 IP 位址上偵聽的偵聽套接字,便可建立基於 IP 位址的虛擬伺服器。偵聽套接字的預設虛擬伺服器為基於 IP 位址的虛擬伺服器。如需有關虛擬伺服器部署方法的更多資訊,請參閱部署虛擬伺服器。
基於 URL 主機的虛擬伺服器
透過提供唯一的 URL 主機,便可設定基於 URL 主機的虛擬伺服器。Host 請求標頭的內容用於將伺服器導向至正確的虛擬伺服器。
例如,如果您想為客戶 aaa、bbb 和 ccc 設定虛擬伺服器,以使每位客戶均有個別的領域名稱,則您首先要配置 DNS 以確認每位客戶的 URL (www.aaa.com、www.bbb.com 和 www.ccc.com) 都可解析為您要使用的偵聽套接字之 IP 位址。然後,您可以將每個虛擬伺服器的 URL 主機設定為正確設定 (例如,www.aaa.com)。
由於基於 URL 主機的虛擬伺服器使用 Host 請求標頭將使用者導向正確頁面,所以並非所有的用戶端軟體都能與其協同工作。不支援 HTTP Host 標頭的舊用戶端軟體不起作用。這些用戶端將收到用於偵聽套接字的預設虛擬伺服器。
預設虛擬伺服器
使用 Host 請求標頭選取基於 URL 主機的虛擬伺服器。如果一般使用者的瀏覽器不傳送 Host 標頭,或伺服器找不到指定的 Host 標頭,則預設虛擬伺服器將處理請求。
預設虛擬伺服器由偵聽套接字設定。建立偵聽套接字時,請指定預設虛擬伺服器。您隨時可以變更預設虛擬伺服器。
用於請求處理的虛擬伺服器選取
伺服器必須經由偵聽套接字接受請求,然後將其導向至正確的虛擬伺服器,然後它才能處理該請求。
將依如下所示選取虛擬伺服器:
如果將虛擬伺服器配置給 SSL 偵聽套接字,在伺服器啟動時將針對證書主題型樣來檢查其 URL 主機,如果它們不匹配,將產生一條警告並寫入至錯誤日誌。
在確定了虛擬伺服器後,該伺服器將執行其所屬虛擬伺服器類別的 obj.conf 檔案。如需有關伺服器如何決定在 obj.conf 中執行哪些指令的詳細資訊,請參閱「Sun ONE Web Server 6.1 NSAPI Programmer's Guide」。
文件根
主文件目錄 (或者文件根) 是一個中央目錄,包含所有可讓遠端用戶端使用的虛擬伺服器檔案。
文件根目錄可提供限定存取虛擬伺服器檔案的簡單方法。它也會使得很容易將文件移至新目錄 (也許在不同磁碟上),而不會變更任何 URL,這是因為 URL 中指定的路徑與主文件目錄相對應。
例如,如果文件目錄為 C:\sun\servers\docs,則諸如 http://www.sun.com/products/info.html 的請求會讓伺服器在 C:\sun\servers\docs\products\info.html 中尋找檔案。如果您變更文件根 (亦即移動所有檔案與子目錄),則只需變更虛擬伺服器使用的文件根,而不要將所有 URL 對映至新目錄或以某種方式通知用戶端在新目錄中查找。
安裝 Sun ONE Web Server 時,請指定 Web 伺服器實例的文件根。它成為預設類別的文件根。您可在類別層級變更該目錄,或在個別虛擬伺服器層級將其置換。
增加類別時,您還需指定文件目錄。該目錄為絕對路徑。但是,如果您僅僅輸入絕對路徑,則屬於該類別的所有虛擬伺服器的文件根預設為同一目錄。如果您將變數 $id 加在文件根絕對路徑的末尾,則每個虛擬伺服器均具有預設文件根 class_doc_root/virtual_server_ID。例如,如果類別的文件目錄為 /sun/servers/docs/$id,則屬於該類別的虛擬伺服器 vs1 為 /sun/servers/docs/vs1。
如需有關變數的更多資訊,請參閱使用變數。
您也可以在個別虛擬伺服器層級置換該類別的預設文件目錄。
日誌檔
建立新的虛擬伺服器時,依預設,該日誌檔與伺服器實例的日誌檔相同。大多數情況下,您會希望每個個別虛擬伺服器都有自己的日誌檔。若要如此設定,您可以變更每個虛擬伺服器的日誌路徑。
如需更多資訊,請參閱配置虛擬伺服器日誌設定。
從先前發行版本遷移虛擬伺服器
如果您在 4.1 版本的 iPlanet Web Server 中使用了虛擬伺服器,則可以使用遷移工具將其遷移至目前發行版本。如需更多資訊,請參閱「Installation and Migration Guide」。
透過虛擬伺服器使用 Sun ONE Web Server 功能Sun ONE Web Server 有許多功能 (如 SSL 和存取控制),您可以配合虛擬伺服器來使用。許多這些功能涉及所有伺服器、伺服器實例、虛擬伺服器類別或個別虛擬伺服器的配置。下列各節描述了這些功能並提供了在哪裡尋找更多資訊的資訊。
本節包括下列主題:
配合虛擬伺服器使用 SSL
如果您要在虛擬伺服器上使用 SSL,大多數情況下可以使用基於 IP 位址的虛擬伺服器。通常採用的連接埠為 443。在基於 URL 主機的虛擬伺服器上很難使用 SSL,這是因為 Sun ONE Web Server 必須先讀取請求,然後才可決定將請求傳送至哪個 URL 主機。伺服器讀取請求後,交換安全資訊的初始交換已經發生。
唯一的例外是當所有基於 URL 主機的虛擬伺服器均具有相同的 SSL 配置 (包括使用「萬用字元證書」的相同伺服器證書) 的情況。如需更多資訊,請參閱第 6 章「使用證書和金鑰」。
配合虛擬伺服器執行 SSL 的一種方法是具備兩個偵聽套接字,一個使用 SSL 並偵聽連接埠 443,另一個不使用 SSL。使用者通常透過非 SSL 偵聽套接字存取虛擬伺服器。若需要使用安全異動,使用者可以按一下網頁上的按鈕以啟動安全異動。然後,請求將通過安全的偵聽套接字。
由於 SSL 異動大大慢於非 SSL 異動,所以此設計將 SSL 異動限制為僅必要的異動。在其餘時間使用較快的非 SSL 連線。
如需有關 Sun ONE Web Server 及虛擬伺服器的安全性設定和使用的更多資訊,請參閱第 6 章「使用證書和金鑰」。如需配合虛擬伺服器執行 SSL 配置範例的圖解,請參閱範例 2︰安全伺服器。
配合虛擬伺服器使用存取控制
藉由虛擬伺服器,您可以在每個虛擬伺服器基礎上設定存取控制。您甚至可以配置它,從而讓每個虛擬伺服器可透過 LDAP 資料庫使用使用者認證和群組認證。如需更多資訊,請參閱控制對虛擬伺服器的存取
配合虛擬伺服器使用 CGI
您可以在虛擬伺服器上使用 CGI。您可以出於存取和安全原因配置許多設定。
如需有關設定和使用 CGI 的更多資訊,請參閱安裝 CGI 程式。
配合虛擬伺服器使用配置樣式
使用配置樣式可以很容易地將一組選項套用至各種虛擬伺服器維護的特定檔案或目錄。如需有關使用配置樣式的更多資訊,請參閱套用配置樣式。
使用虛擬伺服器使用者介面若要建立和編輯虛擬伺服器,您可以使用使用者介面或指令行公用程式。
管理虛擬伺服器的使用者介面包含三個部分:
此外還有適用於一般使用者 (擁有個別虛擬伺服器) 的使用者介面。如需更多資訊,請參閱允許使用者監視個別虛擬伺服器。
本節包括下列主題:
Class Manager
若要存取 [Class Manager],請執行下列步驟::
您也可以在伺服器的樹狀檢視中按一下類別名稱,或按一下 [Server Manager] 右上角的 [Class Manager] 按鈕連結。
Virtual Server Manager
若要存取 [Virtual Server Manager],請執行下列步驟:
您也可以按一下該伺服器樹狀檢視中的虛擬伺服器名稱。
您可以使用指令行公用程式 HttpServerAdmin 來執行與透過使用者介面所能執行的相同虛擬伺服器工作。如需有關指令行公用程式 HttpServerAdmin 的更多資訊,請參閱 HttpServerAdmin (虛擬伺服器管理)。
使用變數
您可以使用變數來為類別賦予虛擬伺服器特定的值,而不必個別地定義每個值。變數在 obj.conf 檔案中定義。雖然您可以定義自己的變數,但使用者介面將無法識別它們。在使用者介面中最有用的變數是 $id,它表示虛擬伺服器的 ID。每當您輸入此變數後,伺服器均會用該值取代個別虛擬伺服器 ID。
您可能還會偶爾看到其他幾個變數,如 $accesslog (每個虛擬伺服器存取日誌的路徑) 和 $docroot (每個虛擬伺服器文件根的路徑),但是 $id 是唯一需要您輸入欄位的變數。
如需有關變數的更多資訊,請參閱「Sun ONE Web Server 6.1 NSAPI Programmer's Guide」。
動態重新配置
動態重新配置允許您對即時 Web 伺服器進行變更,而不必停止和重新啟動該 Web 伺服器來使變更生效。您可以在 server.xml 及其關聯檔案中動態地變更所有配置設定和屬性,而無需重新啟動伺服器。因此,您在虛擬伺服器使用者介面內所做的任何變更均無需重新啟動伺服器即可套用。在變更後,您可以使用重新配置程序檔或使用者介面,動態重新配置您的伺服器。
在 UNIX 平台上,動態重新配置程序檔是名為「reconfig」的 shell 程序檔,它位於每個實例的目錄中。此程序檔沒有指令行引數。只需從伺服器實例的目錄鍵入「reconfig」即可執行該重新配置程序檔。
在 Windows 上,動態重新配置程序檔是名為「reconfig.bat」的批次檔,它位於每個實例的目錄中。沒有指令行引數。只需從伺服器實例的目錄鍵入「reconfig」或「reconfig.bat」即可執行該重新配置程序檔。
執行時,此程序檔會啟動伺服器的動態重新配置 (與使用者介面相似),並顯示與重新配置相關的伺服器訊息。
若要存取動態重新配置畫面,請按一下 [Server Manager]、[Class Manager]、[Virtual Server Manager] 頁面右上角的 [Apply] 連結,然後按一下 [Apply Changes] 頁面上的 [Load Configuration Files] 按鈕。如果在安裝新配置時發生錯誤,則復原先前的配置。
設定虛擬伺服器若要設定虛擬伺服器,請執行下列步驟::
請注意,建立偵聽套接字時,您必須在預設虛擬伺服器欄位內輸入現有的虛擬伺服器。您可以使用安裝伺服器時建立的虛擬伺服器,然後在建立了其他虛擬伺服器後返回並對其進行變更 (如果願意)。
建立偵聽套接字
若要建立偵聽套接字,請執行下列步驟:
- 從 [Server Manager],按一下 [Preferences] 標籤。
- 按一下 [Add Listen Socket]。
- 填寫欄位。
偵聽套接字必須具備唯一的連接埠號和 IP 位址組合。您可以使用 IPV4 或 IPV6 位址。如果您要為基於 IP 位址的虛擬伺服器建立偵聽套接字,則 IP 位址必須為 0.0.0.0、ANY、any 或 INADDR_ANY,這意味著它將偵聽該連接埠上的所有 IP 位址。
您還可以為該偵聽套接字啟用安全性 (SSL)。
[Server Name] 欄位指定了伺服器傳送至用戶端的 URL 中的主機名稱。這會影響伺服器自動產生的 URL;但不會影響儲存在伺服器中的目錄和檔案的 URL。如果您的伺服器使用一個別名,則該名稱應為此別名。
- 按一下 [OK]。
建立虛擬伺服器類別
若要建立虛擬伺服器類別,請執行下列步驟:
建立虛擬伺服器的類別後,請選擇與該類別關聯的服務。如需更多資訊,請參閱內容管理。
編輯或刪除虛擬伺服器類別
若要編輯虛擬伺服器類別設定,請執行下列步驟:
- 從 [Server Manager],按一下 [Virtual Server Class] 標籤。
- 按一下 [Edit Classes]。
- 從您所要編輯或刪除的類別旁邊的下拉式清單中,選擇 [Edit] 或 [Delete]。
請注意,您無法刪除預設類別。
- 使用 [Document Root] 欄位變更至該類別預設文件根的絕對路徑。
依預設會在此目錄中建立此類別中虛擬伺服器的文件根。
- 如果您希望此虛擬伺服器類別使用接受語言標頭剖析,請在 [Accept Language] 欄位中輸入 On。
預設值為 Off。
- 如果要變更與類別關聯的 CGI 預設值,請按一下 [Advanced]。
將顯示帶有 CGI 預設值的視窗。編輯欄位,然後按一下 [OK] 返回 [Edit a Class] 視窗。[Reset] 按鈕可回轉您的變更。
- 按一下 [OK]。該類別即被變更或刪除。
指定與虛擬伺服器類別關聯的服務
用來區分某個虛擬伺服器類別與其他虛擬伺服器類別的某些特徵是為該虛擬伺服器類別啟用的服務。例如,一種虛擬伺服器類別可能啟用了 CGI,而另一種則未啟用。如需有關設定服務的更多資訊,請參閱內容管理。
建立虛擬伺服器
設定虛擬伺服器類別後,您即可建立虛擬伺服器。由於虛擬伺服器是特定虛擬伺服器類別的成員,因此請在 [Class Manager] 上建立虛擬伺服器。
如需更多資訊,請參閱建立虛擬伺服器。
指定與虛擬伺服器關聯的設定
您可以置換虛擬伺服器層級的某些類別設定,也可以配置其他設定。請在 [Class Manager] 中配置這些設定。
如需更多資訊,請參閱建立虛擬伺服器。
允許使用者監視個別虛擬伺服器存在一個特殊的使用者介面,個別虛擬伺服器的管理員可以使用該介面查看其虛擬伺服器的設定及檢視其存取日誌和錯誤日誌。例如,如果您的企業網路包括用於三個不同部門的三台不同虛擬伺服器,則每個部門可個別檢視其設定和日誌檔。
出於安全原因,此管理使用者介面既不在 Administration Server 連接埠上,也不在 Web 伺服器實例連接埠上,而是在一個單獨的連接埠上。
此使用者介面在 Administration Server 內的虛擬伺服器上執行。此虛擬伺服器依預設設定,稱為 useradmin。您必須在 Administration Server 中設定一個偵聽套接字,且該偵聽套接字獨立於該 Administration Server 在其上執行的偵聽套接字,以便使用者不必擁有存取 Administration Server 連接埠的權限即可存取虛擬伺服器管理使用者介面。
下圖 () 顯示了為存取其虛擬伺服器的資訊而存取 useradmin 虛擬伺服器的個別虛擬伺服器管理員。
開啟虛擬伺服器時,如果您編輯 Administration Server 的 /config/server.xml 檔案中的某些設定,則使用者可以透過以下 URL 對其進行管理:
server_name:port/user-app/server_instance/virtual_server_ID
例如︰
sun:9999/user-app/sun/vs2
伺服器實例不包括伺服器實例名稱的「https」部分。
若要確定虛擬伺服器 ID,請查看伺服器實例的 server.xml 檔案。
下圖顯示一般使用者看到的使用者介面:
在安裝 Sun ONE Web Server 6.1 後,您會發現 server_root/https-admserv/config/server.xml 檔案包含某些註釋出的項目,它們用於建立:
若要設定 useradmin,您需要做的僅僅是取消註釋這些項目。
若要配置您的伺服器以使用此功能,請執行下列步驟:
- 建立一個新偵聽套接字,它執行的連接埠要獨立於 Administration Server 所使用的連接埠。
例如,如果您的 Administration Server 在連接埠 8888 上執行,則該新偵聽套接字必須具有不同連接埠號。使用不同偵聽套接字有助於保護您的 Administration Server。
出於安全原因,您無法透過使用者介面增加此偵聽套接字。而是在 Administration Server 的 server.xml 檔案中增加。
- 開啟 Administration Server 的 server.xml 檔案 (位於 server_root/https-admserv/config/server.xml)。
- 取消註釋包含 LS、VSCLASS 和 VS 元素預設值的已註釋行。範例:
<!--
<LS id="ls2" port="9999" servername="plaza" defaultvs="useradmin"/>
-->
<!--
<VSCLASS id="userclass" objectfile="userclass.obj.conf">
<VS id="useradmin" connections="ls2" mime="mime1" aclids="acl1" urlhosts="plaza">
<PROPERTY name="docroot" value="/export1/wsinst/docs"/>
<USERDB id="default"/>
<WEBAPP uri="/user-app" path="/export1/wsinst/bin/https/webapps/user-app"/>
</VS>
</VSCLASS>
-->
這樣將啟用 useradmin (出於安全原因,建立在單獨的連接埠上)。
- 將變更儲存至 server.xml。
- 重新啟動 Administration Server 來套用變更。
- 對於任意伺服器實例中的任意虛擬伺服器,您現在都應該能透過使用下列 URL 存取管理員 UI:
server_name:port/user-app/server_instance/virtual_server_ID
例如︰
plaza:9999/user-app/plaza/https-plaza
存取控制
為了防止未授權的使用者存取虛擬伺服器管理,您可以設定 ACL。因為每個虛擬伺服器的 URI 是唯一的,因此您可以設定存取權限,以便僅正確管理員才可存取虛擬伺服器的設定。
如需更多資訊,請參閱第 9 章「控制對伺服器的存取」。
日誌檔
每個虛擬伺服器都可以擁有自己的日誌檔。依預設,所有虛擬伺服器共用伺服器實例的日誌檔。如果允許使用者檢視其日誌檔,大多數情況下您應該變更日誌檔設定,以便每個虛擬伺服器擁有其自己的存取日誌和錯誤日誌。
如需更多資訊,請參閱配置虛擬伺服器日誌設定。
部署虛擬伺服器Sun ONE Web Server 的虛擬伺服器架構非常靈活。一個伺服器實例可以具有任意多個安全與非安全偵聽套接字。可以使用基於 IP 位址的與基於 URL 主機的兩種虛擬伺服器。
此外,您可將具有相似設定的虛擬伺服器群組為任意數量的虛擬伺服器類別。虛擬伺服器類別中的所有虛擬伺服器共用 obj.conf 中的相同請求處理指令。
每個虛擬伺服器都可以 (並非必須) 具有自己的 ACL 清單、自己的 mime.types 檔案以及自己的 Java Web 應用程式集。
此設計提供了為各種應用程式配置伺服器的最大靈活性。下列範例論述了 Sun ONE Web Server 可用的某些可能配置。
範例 1:預設配置
新安裝 Sun ONE Web Server 後,您擁有一個伺服器實例。該伺服器實例只有一個偵聽套接字,它在為您電腦配置的任何 IP 位址上的連接埠 80 (或您在安裝時選取的任何其他連接埠) 上偵聽。
您本機網路中的某個機制可以為您電腦所配置的每個位址建立名稱至位址的對映。在下面的範例中,電腦有兩個網路介面︰位址 127.0.0.1 上的回送介面 (即使沒有網路卡也存在該介面) 以及位址 10.0.0.1 上的乙太網路介面。
經由 DNS,名稱 example.com 將對映至 10.0.0.1。偵聽套接字配置為在該機器配置的任何位址之連接埠 80 上 (「ANY:80」或「0.0.0.0:80」) 偵聽。
在此配置中,下列連線到達伺服器並由虛擬伺服器 VS1 提供服務。
將此配置用於傳統 Web 伺服器。您無需增加其他虛擬伺服器或偵聽套接字。您可以透過變更 defaultclass (VS1 為 defaultclass 的成員) 和 VS1 自身的設定來配置伺服器的設定。
範例 2︰安全伺服器
如果您要在預設配置中使用 SSL,只需將偵聽套接字變更為安全模式即可。這與在先前版本的 Sun ONE Web Server 中設定安全性的方式類似。
也可以增加配置為 ANY:443 的新的安全偵聽套接字,並將 VS1 與此新偵聽套接字關聯起來。虛擬伺服器現在具有兩個偵聽套接字,一個使用 SSL,一個不使用。現在,您的伺服器將提供相同內容 (無論是否使用 SSL),即 http://example.com/ 與 https://example.com/ 提供的內容相同。
請注意,SSL 參數將附加至偵聽套接字。因此,配置到特定偵聽套接字的所有虛擬伺服器僅可以有一組 SSL 參數。
範例 3︰企業網路主機作業
Sun ONE Web Server 的更複雜配置是該伺服器針對企業網路的佈署來接待一些虛擬伺服器。例如,您有三個內部網站,員工可以從中查看其他使用者的電話號碼、查看校園地圖並向資訊服務部門追蹤其請求狀態。先前 (在此範例中),這些網站佈署在三台不同的電腦上,網站名稱 phone.example.com、maps.example.com、is.example.com 分別對映至這三台電腦。
為使硬體和管理開銷降到最低,您希望將這三個網站合併為一個 Web 伺服器,佈署在機器 example.com上。您可以採用以下兩種方法進行設定︰使用基於 URL 主機的虛擬伺服器或使用單獨的偵聽套接字。兩種伺服器均有明顯的優勢和劣勢。
雖然基於 URL 主機的虛擬伺服器容易設定,但其具有以下劣勢︰
- 在此配置中支援 SSL 需要使用萬用字元證書的非標準設定。如需更多資訊,請參閱第 4 章「Web 容器與 Web 應用程式之基於 J2EE 的安全性」。
- 基於 URL 主機的虛擬伺服器無法與舊的 HTTP 用戶端協同工作。
您也可以設定基於 IP 位址的配置,每個位址一個偵聽套接字:
基於 IP 位址的虛擬伺服器優勢如下︰
劣勢有︰
兩種配置均需要為三個名稱設定名稱至位址的對映。在基於 IP 位址的配置中,每個名稱都對映至不同位址。必須設定主機,才能收到所有這些位址上的連線。在基於 URL 主機的配置中,所有名稱都可以對映至機器原本具有的同一個位址。
具有多個偵聽套接字的配置可能給您最小的效能收益,因為伺服器不必找出請求到達的位址。但是,使用多個偵聽套接字還會由於額外接收器執行緒而導致其他開銷 (記憶體和排程)。
範例 4:大量主機作業
大量主機作業指的是您可以啟用許多低流量虛擬伺服器的配置。例如,管理許多低流量個人首頁的 ISP 就屬於此類。
虛擬伺服器通常基於 URL 主機並屬於多個虛擬伺服器類別之一 (取決於提供的服務層級)。例如,可能有一個類別僅允許靜態內容,而另一個類別允許靜態內容和 CGI。
請注意,您安裝伺服器 VS1 時安裝的虛擬伺服器仍存在於 defaultclass 中。