首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

IIS 多虛擬目錄同主機頭:無沖突但需路徑區分訪問

     編輯:程式設計綜合問答

場景

IIS 建立兩個虛擬目錄 testbaseMM、testbaseNN,均設置主機頭 www.testbase.com。IIS 允許設置成功無衝突提示,但瀏覽器訪問 www.testbase.com 時會命中哪個站點?

核心機制

IIS 綁定三元組:**IP:Port:HostHeader**。
同一 IP:Port 下允許**多個站點/虛擬目錄共用主機頭**,但**物理路徑不同**。請求到達時,IIS 僅按 HostHeader 路由到**同一站點**(默認網站),無法自動區分虛擬目錄。

訪問規則

  • https://www.testbase.com/ → 映射到**默認網站根目錄**(或第一個匹配綁定的站點根目錄)。
  • https://www.testbase.com/testbaseMM/ → 訪問虛擬目錄 testbaseMM 對應的物理路徑。
  • https://www.testbase.com/testbaseNN/ → 訪問虛擬目錄 testbaseNN 對應的物理路御。

常見誤區

誤解事實
同主機頭會衝突報錯IIS 允許同主機頭不同路徑,僅路由到同一站點
瀏覽器自動選對虛擬目錄必須在 URL 顯式包含虛擬目錄名
可用主機頭區分虛擬目錄主機頭只能區分站點,不能區分同站點下的虛擬目錄

正確架構建議

  1. 不同業務用不同站點 + 不同主機頭
    siteA.testbase.com、siteB.testbase.com,各自綁定獨立站點、獨立應用程序池,隔離度最高。
  2. 同一站點下用虛擬目錄/應用程序區分模塊
    URL 統一為 www.testbase.com/moduleA/、/moduleB/,共用主機頭、應用程序池,部署簡單。
  3. 反向代理/URL Rewrite 隱藏路徑
    用 ARR 或 Nginx 將 siteA.testbase.com 代理到 www.testbase.com/testbaseMM/,對外呈現獨立域名。

驗證命令

# 查看站點綁定
appcmd list site
appcmd list vdir

結論:同主機頭多虛擬目錄**不沖突**,但**必須通過 URL 路徑區分訪問**,無法裸域名自動路由到特定虛擬目錄。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved