2007/08/21

[System] 利用[IIS Reverse Proxy]制作跨IIS的WebApplication

環境說明:
  • OS: 外部與內部皆為 Windows 2003 Enterprise Server.
  • 外部Web Server: IIS6.0, WebApplication (Portal)
  • 內部Web Server: IIS6.0, WebApplication (InnerPortal)

建置步驟:

  1. http://www.saltypickle.com/Home/16 下載 ReverseProxy.
    * 我以 ReverseProxy(v1.5).zip (20051101)為例
  2. 將 ReverseProxy(v1.5).zip 解壓縮後,修改為所需的目錄名 (ex: Portal).
  3. 將該目錄搬至網站目錄下 (ex: C:\Inetpub\wwwroot).
  4. IIS 的 WebApplication 設定:
    1. 開啟 IIS 管理工具, 應可看到網站內有一個尚未成為 WebApplication 的資料夾.
    2. 在 IIS 管理工具中, 點選該資料夾 –> 滑鼠右鍵 –> 內容.
    3. 在 [目錄] 頁籤中, 按下右下方的 [建立] 按紐, 將該資料夾建立為 WebApplication.
    4. 此時, 下方的 [設定] 按鈕為 enable 狀態, 按下 [設定].
    5. 在 [對應] 頁籤中, 先記下上方 [應用程式副檔名] 中, aspx 的 [aspnet_isapi.dll] 執行檔路徑.
    6. 按下下方 [萬用字元應用程式對應] 的 [插入] 按紐, [執行檔] 欄位請輸入步驟 5 所記的 [aspnet_isapi.dll] 執行檔路徑, 並取消勾選 [確認該檔案是否存在].
    7. 步驟 4.1 - 4.6 完成後, 便可一步步按下 [確定] 按紐, 結束 IIS 的設定.
  5. 修改 Portal 的 Web.config:
    1. 至剛剛的 Protal 目錄下修改 Web.config, 將 <appSettings> 中的 BackEndSite 改為自己所需的路徑, 例如:
      <add key="BackEndSite" value="http://192.168.1.10:7777/InnerPortal" />
  6. 將 ICSharpCode.SharpZipLib.dll 組件加入 .Net 的組件快取:
    1. [系統管理工具] -> [Microsoft .NET Framework 1.1 設定] –> 展開左方 [我的電腦].
    2. 在 [組件快取] –> 滑鼠右鍵 –> [加入] –> 將 ReverseProxy(v1.5).zip 裡的 ICSharpCode.SharpZipLib.dll 加入.
  7. 功能測試:
    1. 在 Asp.Net(C#) 可透過 Request.Url 與 Server.MapPath("."), 分別得知 Request 的 Url 與本 WebApplication 的所在目錄.
    2. 若測試無誤, Request 的 Url 應顯示外部 Portal 的 Url, Server.MapPath(".") 會顯示內部 InnerPortal 的本機目錄.
若有其他網站需要此架構, 只需將解開的 ReverseProxy 資料夾改另一個名字, 重覆步驟 3 - 5, 並修改 Web.config 所要對應的網站.

沒有留言: