(1)用文本編輯器打開<Tomcat主目錄>/conf目錄下的Server.xml文件,使用“查找”菜單查找內容為“</Host>”的行,緊接該行下面增加一對<Host></Host>標簽。參照前面的<Host>標簽的屬性設置情況,設置新增的<Host>標簽的屬性,并在它里面嵌套一個設置該WEB站點根目錄的<Context>元素,最終的內容如下:
<Host name="www.xydesign.cn" debug="0" appBase="d:\site1">
<Context path="" docBase="." debug="0"/>
</Host>
這樣,將創建一個新的WEB站點。上面的<Context>元素的docBase屬性值被設置為一個點(.),即表示使用<Host>元素的appBase屬性中所設置的路徑作為這個<Context>所映射的目錄。
(2)在上面新增的<Host></Host>標簽對下面再增加一對<Host></Host>標簽,并將它設置為如下形式:
<Host name="www.xydesign.net.cn" debug="0" appBase="d:\site2">
<Context path="" docBase="." debug="0"/>
</Host>
這又創建了一個新的WEB站點,該站點的主機名稱為www.xydesign.net.cn,根目錄對應的本地文件系統目錄為d:\site2。
(3)在d:盤下創建名稱為site1和site2兩個目錄,并在這兩個目錄中分別創建一個名為test.html的文件,在d:\site1\test.html文件中寫入如下一行內容:
這是d:\site1目錄中的test.html文件
在d:\site2\test.html文件中寫入如下一行內容:
這是d:\site2目錄中的test.html文件
(4)用記事本程序打開c:\winnt\System32\Drivers\Etc\Hosts文件,可以看到有如下一行內容:
127.0.0.1 localhost
緊接這行文本的下面,用它復制出兩行文本,并將這兩行文本中的localhost分別修改成www.xydesign.cn和www.xydesign.net.cn,這樣,就使用Hosts文件為當前計算機設置了多個主機名。如果要用www.xydesign.cn和www.xydesign.net.cn這個兩主機名訪問其他計算機上的WEB站點,則應將127.0.0.1修改成其他計算機的實際IP地址。保存Hosts文件后,Hosts文件的內容如下:
127.0.0.1 localhost
202.104.125.154 www.xydesign.cn
202.104.125.154 www.xydesign.net.cn
其中202.104.125.154為您服務器的固定IP地址。
在命令行窗口中執行“ping www.xydesign.cn”和“ping www.xydesign.net.cn”命令,查看該主機名是否被正確解析到了相應的IP地址上。建立site1和site2與計算機IP地址的映射后,在IE瀏覽器地址欄中輸入http://localhost:8080/test.html、http://www.xydesign.cn:8080/test.html和http://www.xydesign.net.cn:8080/test.html,可以看到瀏覽器將顯示出各自站點中的test.html網頁文件的內容。
如需不要后面的8080端口號,可直接把tomcat端口號設置為80即可。
(5)設置域名www.xydesign.cn www.xydesign.net.cn 的解析IP地址都為202.104.125.154(即您服務器的IP地址)。
可見,使用主機名的方式在同一臺WEB服務器上創建多個虛擬主機后,在WEB瀏覽器中使用主機名訪問Web服務器時,Web服務器將選擇與該主機名關聯的WEB站點進行響應。通過這種方式,多個WEB站點可以共享同一個IP地址和相同的端口號,唯一不足的就是WEB瀏覽不能通過IP地址去訪問這些WEB站點。基于主機名的虛擬主機是目前Internet上的大多數虛擬主機業務提供商所通常采用的方式。只要找出幾個小型公司或個人的網站,如果在WEB瀏覽器地址欄中輸入“http://主機名”可以訪問到該WEB站點,接著在命令行窗口中執行“ping 主機名”,查看到該域名對應的IP地址,然后在WEB瀏覽器地址欄中輸入“http://IP地址”時,卻無法訪問這個WEB站點了,那么,這個WEB站點就是一個基于主機名的虛擬主機,它與其他一些WEB站點共享一臺WEB服務器,而不是自己獨享一臺WEB服務器。
注意:當使用安全套接字層 (SSL) 時,不能使用主機頭字段來實現虛擬主機,這是因為使用SSL的HTTP請求有加密保護。主機頭字段是加密內容的一部分,不能被解釋和路由到正確的站點。