2

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

 2 years ago
source link: https://blog.darkthread.net/blog/websites-sharing-80-port/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

2016-12-07 09:43 PM 4 24,340

講到要在一台主機架設多個站台,一般直覺想到的是用不同的 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,分屬不同站台。

3750-f846-o.gif

當輸入 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 運行多個站台的效果。

3753-6f67-o.gif

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

3751-f714-o.gif

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

3752-ffba-o.gif

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK