推薦教學:linux教學
首先,一個IP綁定多個網域是很常見的事情,租用的虛擬主機大多數都是多個主機共享同一個IP,區分具體存取的是哪個主機要從兩個方面實現:
1、客戶端如何區別不同網站
客戶端在請求時,會在HTTP請求的時候包含要請求的特定主機名稱,例如訪問Google的請求通過抓包分析內容是這樣的:
GET / HTTP/1.1 Host: www.google.com
整個請求會被發送到伺服器上,其中有Host字段標識你要請求的網站域名是什麼,即使訪問的是同一個IP地址,由於Host字段不同,所以伺服器軟體有辦法區分具體造訪的是哪個網站。
關於Host欄位的具體定義,可以閱讀RFC-2616的第14.23節:http://www.rfc-editor.org/rfc/rfc2616.txt
以下是節錄(注意加粗的部份):
14.23 Host
The Host request-header field specifies the Internet host and port
number of the resource being requested, as obtained from the original
################################################################## # URI given by the user or referring resource (generally an HTTP URL,### as described in section 3.2.2). The Host field value MUST represent### the dgiing hority of the autgin unhority ungate the#. # original URL. This allows the origin server or gateway to### differentiate between internally-ambiguous URLs, such as the root "/"### ###URL of a server for multiple hosts on aple hosts on a . ########另外,RFC-2616並非HTTP協定的最新規範,具體的規範請參考RFC-2616的描述連結:Information on RFC 2616#############2、伺服器端如何設定############如果伺服器使用Apache,那麼在Apache的設定檔中加入VirtualHost即可新增虛擬主機:###
<VirtualHost 10.0.0.1> ServerAdmin admin@admin DocumentRoot "D:/website1" ServerName http://myhost1.com DirectoryIndex index.php </VirtualHost> <VirtualHost 10.0.0.1> ServerAdmin admin@admin DocumentRoot "D:/website2" ServerName http://myhost2.com DirectoryIndex index.php </VirtualHost>###以上就定義了兩個網域http://myhost1.com和http://myhost2.com,分別在不同的根目錄,透過這樣的設定Apache如果收到http://myhost1.com的請求,那麼就到d:/website1裡尋找對應的頁面,如果是http://myhost2.com的請求,那就到d:/website2裡尋找對應的頁面。 ######通常Apache還有一個預設網站,這個網站是可以使用IP位址存取的,如果將這個網站設定為無效,那麼這個主機就無法透過IP位址直接存取HTTP資源。 ############對IIS來說,IIS能使用同一個IP綁定多個站點,具體可以參考下圖:############### ######在預設網站->屬性->網站->進階中,新增不同的網域即可。因為我的IIS版本較低,本身無法支援綁定多個網站,高版本的IIS中,可以配置多個網站,每個網站綁定不同的域名,即可實現訪問時的區分。 ######如果伺服器沒設定預設網站,那麼IP位址也無法直接存取主機。 ######所以,如果你直接透過IP位址造訪網站,會遇到兩種情況:##########1、伺服器設定了預設網站,或是使用IP作為主機名稱去匹配請求的Host字段,那麼你透過IP訪問的就是這個網站;############2、伺服器沒有設定預設網站,或者預設網站被禁止,那麼你透過IP無法打開任何東,通常遇到的是404錯誤(找不到頁面),在我使用過的幾個虛擬主機服務商那,遇到的都是類似的錯誤。 ############另外,不管是IIS或Apache或其它類型的網站伺服器軟體,不只支援多域名,也支援多IP,也就是一個伺服器同時有多個網域和多個IP,互相之間是互不干擾的。 ######
以上是一個ip位址可以對應多個網域嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!