小技巧-多站台共用 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 的連線:

透過指定主機名稱,我們可以實現在 80 Port 執行多個站台的理想。而如下所示,IIS 允許其中一個站台不指定主機名稱(本例為 Default Web Site),作為查無符合 Host 標頭宣告時的預設站台。

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

歡迎推文分享:
Published 07 December 2016 09:43 PM 由 Jeffrey
Filed under:
Views: 6,993



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<December 2016>
SunMonTueWedThuFriSat
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication