如何擁有一個IP位址和多個網站?

如何擁有一個IP位址和多個網站?

如果我在 Internet 上有一個 IP 位址,但有多個 Web 名稱,我該如何獲得它?例如,當託管公司擁有共享 IP,但我獲得無限的網域(以及該盒子上的其他人)。

我在網路上有一個盒子,但當有人輸入不同的 www 時,我想指向另一台擁有不同網站的機器...(它就位於它旁邊的另一個盒子中)。這都是子網域嗎?謝謝。

我是託管公司

答案1

它是 HTTP 1.1 協定的一部分。

具體來說,HTTP 1.1 協定包括一個名為「host:」的標頭,它指定客戶端嘗試存取特定伺服器上的哪個網站。

因此,如果 snoopy.net 和 woodstock.org 都共用 192.0.32.10 並且您的瀏覽器嘗試從http://snoopy.net/doghouse 特定的 http 請求獲取內容,則如下所示:

GET /doghouse HTTP/1.1
Host: snoopy.net

如果所需的 url 是http://woodstock.org/seeds請求,則如下所示

GET /seeds HTTP/1.1
Host: woodstock.org

在這兩種情況下,您的電腦和伺服器的連接埠 80 之間都會有一個 TCP 套接字。伺服器將知道根據主機標頭從 /var/www/snoopy.net 或 /var/www/woodstock.org/ 取得內容。

還會有其他 cookie 標頭和其他內容(例如瀏覽器類型和允許的內容),但「主機」標頭具體允許 Web 伺服器知道需要哪個虛擬網站。

還有更多內容在RFC2616

這也是為什麼 https 網站必須** 擁有自己的 IP 位址 - ssl 金鑰交換和憑證驗證發生在 http 事務之前,因此 http 伺服器不會知道何時給出「woodstock.org」或「snoopy.net」的憑證它在192.0.32.10 的連接埠443 上接收https 連線。


編輯

** 在評論中重力指出 TLS 規格中有 SSL 擴展,允許伺服器知道使用者嘗試造訪哪個網站,並且大多數現代 Web 瀏覽器都具有這些擴展,因此必須有點太強了。

答案2

所有現代瀏覽器都會隨請求一起發送一些稱為「Host:」標頭的內容。

Firefox 發送此頁面的實際請求是:

主辦單位:superuser.com
使用者代理:Mozilla/5.0(Windows;U;Windows NT 6.0;en-US;rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)
接受:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
接受語言:en-us,en;q=0.5
接受編碼:gzip、deflate
接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.7
保持活動:300
連線:保持活動狀態

如您所見,

主辦單位:superuser.com
位標識有問題的網站。

在 IIS 和 Apache 中,您可以設定僅接受來自特定 IP/主機組合的請求的虛擬網站。

至於您的特定問題,您必須了解您的特定託管公司希望您如何要求配置。

答案3

在單一 IP 位址/主機上託管多個網域/子網域的技術稱為虛擬主機。 http get 請求包含請求所針對的域名,該域名允許 Web 伺服器將請求與特定虛擬域相符。

如果您內部有多個實體主機,只有一個外部 IP,那麼您需要考慮進行設置反向代理將請求轉送到正確的機器/內部 IP 位址。

答案4

簡而言之...

一 - 將各個網域的 DNS 項目設定為全部指向您的盒子。

二 - 正如其他人所描述的,設定您的網頁伺服器(您沒有說出哪一個)以符合請求的主機名稱。

這樣,所有網域的所有請求都會傳送到同一台計算機,並且它的配置會取得請求的網域並將其路由到包含該網站內容的正確資料夾。

相關內容