iT邦幫忙

3

共享主機是怎麼做到的?

https://ithelp.ithome.com.tw/upload/images/20180111/20103061XPprrv5xJO.png

我查了一下主機商分配給我的共享IP有8百多個網站
我好奇這是怎做到的?
一般如果我們一個IP要分配給多個網站,只能用端口轉發對外連線的表示是這樣
http://xxx.xxx:80
http://xxx.xxx:81
但是bluehost是怎麼做到可以用
http://xxx.xxx 的方式連線到同一個IP上?

看更多先前的討論...收起先前的討論...
weiclin iT邦高手 4 級 ‧ 2018-01-11 17:24:24 檢舉
virtual host
d2598798 iT邦新手 5 級 ‧ 2018-01-11 17:38:58 檢舉
感謝
weiclin iT邦高手 4 級 ‧ 2018-01-11 17:42:19 檢舉
另外, 也有可能是負載平衡的 ip, 後面是一堆機器也不一定
hsiang11 iT邦好手 1 級 ‧ 2018-01-11 18:16:46 檢舉
我覺得反向代理也有可能作到
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

23
Ray
iT邦大神 1 級 ‧ 2018-01-11 23:55:51
最佳解答

這件事呢, 要從 20 年前說起....

當 1996 年 HTTP 1.0 版通訊協定定案時 (RFC-1945), Web Server 軟體跟其他的通訊軟體一樣, 一個軟體, 綁一個通訊 Port. 當時所有軟體都這麼做, 所以 Web Server 這樣做並沒有甚麼不同.

但是後來, 大家漸漸發現, 那幾年下來, Web Server 快速成長, 如果要讓很多台 Web Server 都可以發布, 就必須每一台 Web 給一個 IP. 但當時 Internet 快速起飛, IPv4 卻快速被耗盡, 導致開始出現 IP 不夠用給 Web Server 用的問題.

到了 1999 年 6 月 (也就是 .com 產業泡沫化的那年), HTTP 從 1.0 改版為 1.1 (RFC-2616), 為了改善上述問題, 於是在 1.1 版加入了一個新的功能: 讓瀏覽器可以在 Header 裡面送出主機的名稱, 而 Web Server 收到這個名稱之後, 可以根據名稱, 來決定要回應誰的網頁出去.

這個技術, 叫做: Name Based Virtual Host.

Apache 的 httpd Server 從 1.1 版就開始實做這個技術, 但整個技術成熟, Config 指令設計完整, 到商業化階段, 則是在 1.3 以後的版本. 而且必須搭配較新版可支援 HTTP/1.1 的瀏覽器, 才能達到這個功能.

所以, 當你的:

  • Web Server 支援 HTTP/1.1
  • 瀏覽器支援 HTTP/1.1
  • 而且有正確地設定 Web Server 組態

這三個條件都滿足下, 一個 httpd server 就可以只用一個 IP, 一個 Port, 去服務無限多個不同的 FQDN 名稱, 也就等於是: 只用 1 個 IP, 服務無限多台 Web Server.

自此之後, Proxy, Reverse Proxy, Load Balance...等等技術, 都依循 HTTP/1.1 的規範來設計, 於是乎, 全世界的軟體都可以支援了..

Virtual Host: 如何在同一個 IP (伺服器)上以不同的 Domain Name 架設多個網站

看更多先前的回應...收起先前的回應...

雷神真是活谷哥 ^^

Ray iT邦大神 1 級 ‧ 2018-01-12 18:12:47 檢舉

年紀太大, 就只會記得歷史而已...誰叫我看著他一路走來.../images/emoticon/emoticon33.gif

untitled iT邦新手 5 級 ‧ 2018-01-24 09:08:03 檢舉

長知識了

untitled iT邦新手 5 級 ‧ 2018-01-24 09:08:14 檢舉

長知識了/images/emoticon/emoticon07.gif

tsang iT邦新手 1 級 ‧ 2018-03-17 05:34:50 檢舉

謝謝前輩,領教了。/images/emoticon/emoticon41.gif

1
黃彥儒
iT邦高手 1 級 ‧ 2018-01-11 18:08:42

因為是虛擬主機,說的詳細點好了
瀏覽器再送出GET請求時會有標頭,上面載明要哪個網域;虛擬主機可以依據標頭資訊來做處理

我要發表回答

立即登入回答