推薦教學: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>
以上是一個ip位址可以對應多個網域嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!