google code prettify

2016年12月7日 星期三

[IIS] 小技巧-多站台共用 IIS 80 Port

以下內容完全來自黑暗大大,很實用,只好偷偷學起來-多站台共用 IIS 80 Port
此篇純屬註記,方便日後查詢使用 

講到要在一台主機架設多個站台,一般直覺想到的是用不同的 Port 區隔,例如:httq://web_server/、httq://web_server:8080/ 指向不同站台。不過,非 80 Port 網址親和力較差,甚至會被某些較機歪嚴格的防火牆阻擋(只開放 80 及 443),那麼同一台主機上的多個站台可以共用 80 Port 嗎?Yes!這是 HTTP 標準應用情境之一,主流網站伺服器也都內建支援。

請看示範。先使用 ping 驗證 www.intra.net 與 api.intra.net 均指向 IP 192.168.1.105,以瀏覽器連線 www.intra.net 及 api.intranet.net 顯示不同網頁,由 Request.PhysicalPath 可證兩個 default.aspx 各位於 X:\WWW\IntranetWww 及 X:\WWW\IntranetApi,分屬不同站台。

當輸入 www 及 api 兩組網址,瀏覽器連上的都是 192.168.1.105 這台機器的 80 Port ,但兩次送出的 HTTP Request 最大差異如下圖紅框所示,Request Header 中有個 Host 標頭,兩次傳送的內容分別是 Host: www.intra.net 及 Host: api.intra.net,伺服器便可依此判斷將 Request 交給不同站台處理,達成在同一 IP 80 Port 運行多個站台的效果。


回到 IIS 上,要如何設定才能實現多站台共享 80 Port?其實它就藏在新增網站的介面一個常被忽略的欄位-「主機名稱」,如以下範例,該站台監聽 80 Port,但只接受 HTTP Request Host 標頭為 api.intranet.net 的連線:

學會這點,下回再有同主機掛多站台需求,除了區分不同 Port 外又多一招可用;而遇到「敲主機名稱網址與 IP 顯示網頁不同」問題,也該知道茶包要從哪裡射起囉~學會這點,下回再有同主機掛多站台需求,除了區分不同 Port 外又多一招可用;而遇到「敲主機名稱網址與 IP 顯示網頁不同」問題,也該知道茶包要從哪裡射起囉~

此技術又稱"共時性"這術語


後記:保哥
補充說明:這個技術又稱為 "Name-based virtual hosts",是在 HTTP/1.1 通訊協定規格中定義的

Reference
HTTP/1.1 通訊協定規格
Virtual hosting

沒有留言:

張貼留言