WEB 瀏覽器與 WEB server建立連接后,除了將請(qǐng)求 URL 中的資源路徑發(fā)送給 WEB server外,還會(huì)將 URL 中的主機(jī)名部分作為 HTTP 請(qǐng)求消息的 Host 頭發(fā)送給 WEB server。比如,在瀏覽器地址欄中輸入 http://www.it315.org ,瀏覽器發(fā)送給 www.it315.org 主機(jī)上的 WEB server的請(qǐng)求消息內(nèi)容例如以下:
??????? GET ?? / ?? HTTP/1.1< 回車 >
??????? Host: ?? www.it315.org< 回車 >
??????? < 回車 >
WEB server接收到瀏覽器的訪問(wèn)請(qǐng)求消息后,依據(jù) Host 頭字段中所設(shè)置的主機(jī)名,就知道該選擇哪個(gè) WEB 網(wǎng)站來(lái)進(jìn)行響應(yīng),因此,能夠使用不同的主機(jī)名來(lái)作為區(qū)分同一個(gè) WEB server上的不同網(wǎng)站的標(biāo)識(shí)信息。
Tomcat 的 Server.xml 配置文件里有一個(gè) <Host> 元素,一個(gè) <Host> 元素用于建立一個(gè) WEB 網(wǎng)站,使用多個(gè) <Host> 元素則能夠建立多個(gè) WEB 網(wǎng)站。 <Host> 元素的父級(jí)的元素中為 <Engine> 元素,嵌套在同一個(gè) <Engine> 元素中的多個(gè) <Host> 元素的 name 屬性不能同樣, <Host> 元素的 name 屬性指定 WEB 網(wǎng)站所相應(yīng)的主機(jī)名稱。 Tomcat 的 Server.xml 配置文件里初始設(shè)置的 <Host> 元素內(nèi)容例如以下:
<Host name="localhost" appBase="webapps" …>
…
</Host>
<Host> 元素中的 appBase 屬性指定了一個(gè)路徑,該路徑將作為嵌套在它里面的 <Context> 元素的 docBase 屬性中設(shè)置的相對(duì)路徑的基準(zhǔn)路徑。
當(dāng) Tomcat 接收到訪問(wèn)請(qǐng)求時(shí),將比較請(qǐng)求消息中的 Host 頭字段的值與 <Host> 元素的 name 屬性值,并以匹配的 <Host> 元素所創(chuàng)建的 WEB 網(wǎng)站來(lái)響應(yīng)。假設(shè) Server.xml 文件里沒(méi)有與請(qǐng)求消息的 Host 頭字段匹配的 <Host> 元素, Tomcat 將以默認(rèn)的 WEB 網(wǎng)站來(lái)響應(yīng)。僅僅要 <Engine> 元素的 defaultHost 屬性設(shè)置為嵌套在它里面的某個(gè) <Host> 元素的 name 屬性值,該 <Host> 元素所創(chuàng)建的 WEB 網(wǎng)站就成了該引擎的默認(rèn) WEB 網(wǎng)站。比如, Tomcat 的 Server.xml 文件里的 <Engine> 元素的默認(rèn)設(shè)置例如以下:
<Engine name="Standalone" defaultHost="localhost" debug="0">
…
??????? <Host name="localhost" appBase="webapps" …>
??????? …
??????? </Host>
…
</Engine>
上面的這段配置信息說(shuō)明,該引擎的默認(rèn) WEB 網(wǎng)站為嵌套在 <Engine> 元素中的 name 屬性為“ localhost ”的 <Host> 元素所創(chuàng)建的 WEB 網(wǎng)站。
在同一臺(tái)計(jì)算機(jī)上建立了多個(gè)基于主機(jī)名的虛擬主機(jī)后, WEB 瀏覽器要訪問(wèn)當(dāng)中的某個(gè)虛擬主機(jī)的資源時(shí),在訪問(wèn) URL 中必須採(cǎi)用主機(jī)名,而不能採(cǎi)用 IP 地址。這是由于 WEB 瀏覽器要將 URL 中的主機(jī)名部分作為 HTTP 請(qǐng)求消息的 Host 頭發(fā)送給 WEB server,假設(shè) URL 中的主機(jī)名部分使用的是 IP 地址,那么,瀏覽器發(fā)出的請(qǐng)求消息中的 Host 頭字段的值就是這個(gè) IP 地址,而在同一臺(tái)計(jì)算機(jī)上建立的多個(gè)基于主機(jī)名的虛擬主機(jī)共享同一個(gè) IP 地址,在 Host 頭字段使用 IP 地址根本就無(wú)法區(qū)分不同的網(wǎng)站。
即使在 URL 中指定的是主機(jī)名時(shí), WEB 瀏覽器還是要先獲得該主機(jī)名所相應(yīng)的 IP 地址,然后再使用這個(gè) IP 去連接 WEB server。所以,在建立基于主機(jī)名的虛擬主機(jī)時(shí),除了要在 Tomcat 的 server.xml 文件里進(jìn)行設(shè)置外,還須要在整個(gè)網(wǎng)絡(luò)系統(tǒng)中建立主機(jī)名與 IP 地址的映射關(guān)系,即必須將主機(jī)名加入到名稱解析系統(tǒng),以便 WEB 瀏覽器可以從名稱解析系統(tǒng)中查詢出主機(jī)名所相應(yīng)的 IP 地址。建立主機(jī)名與 IP 地址的映射關(guān)系的慣用方式有兩種:一是使用客戶機(jī)本地的 Hosts 文件,二是使用 DNS(Domain Name System ,域名系統(tǒng) ) server。 Hosts 文件和 DNS 的作用都是同意用戶使用“友好”的、文本格式的主機(jī)名稱,而不是數(shù)字格式的 IP 地址來(lái)訪問(wèn)網(wǎng)絡(luò)中的計(jì)算機(jī)。 Hosts 文件可用于小型的 Intranet (企業(yè)內(nèi)部網(wǎng)),網(wǎng)絡(luò)中的全部計(jì)算機(jī)上都須要使用 Hosts 文件。 DNS 通經(jīng)常使用于大型的網(wǎng)絡(luò),特別是 Internet 上對(duì)外提供服務(wù)的計(jì)算機(jī)都是通過(guò) DNS 來(lái)建立其主機(jī)名與 IP 地址的映射關(guān)系。客戶機(jī)首先在本地的 Hosts 文件里查找主機(jī)名稱所映射的 IP 地址,假設(shè)沒(méi)有找到,再去查詢 DNS server。為了簡(jiǎn)單起見(jiàn),這里僅介紹一下 Hosts 文件。對(duì)于 Windows 2000 系統(tǒng), Hosts 文件位于操作系統(tǒng)根文件夾(取決操作系統(tǒng)所在的分區(qū),一般是 c:/winnt )下的 System32/Drivers/Etc 子文件夾中,默認(rèn)情況下,該文件里有例如以下一行內(nèi)容:
??????? 127.0.0.1 ??????? localhost
這行文本的作用就是將 IP 地址( 127.0.0.1 )映射成主機(jī)名( localhost ),這也就是在 IE 瀏覽器地址欄中能夠使用 localhost 訪問(wèn)本地 WEB server的原因。假設(shè)要添加很多其它的主機(jī)名與 IP 地址的映射,能夠在 Hosts 文件里添加很多其它的行,然后參照上面這行內(nèi)容的格式在每行中填寫 IP 地址和對(duì)應(yīng)的主機(jī)名。

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
