【IIS】IIS的大小事

上次寫網誌已經是2月,最近剛好有機會從0開始架設IIS,阿猩曾經使用IIS,將求職展示用的網站架起來,但畢竟不會每一天都在建立IIS,而當時又懵懵懂懂,剛好這次有機會讓阿猩可以再次學習,就花時間整理這篇網誌囉。

打開IIS的大門吧


Internet Information Services (IIS),直白翻譯為網路資訊服務,使用IIS就可以將寫好的功能或服務,透過網路提供給他人使用,例如網頁、檔案傳輸等。如果使用.Net 進行開發的工程師,過版時應該都有機會接觸到。如果從沒安裝IIS的電腦,需要透過Window功能的介面,將IIS的功能啟用並安裝,操作流程可參考(參考1),安裝成功就可以看到IIS的管理員介面啦(圖1)
 

圖1 iis管理員


將網站一步一步架起來


應用程式集區
Window提供的說明很淺顯易懂,應用程式集區就是用來放應用程式的(廢話…),IIS是服務器,一間公司可能有很多的專案,針對不同的專案,我們可以建立不同的應用程式集區,在後續的設定時,再分別指定,要讀取哪個資料夾內的程式碼,這樣就可以將程式隔離。點擊新增應用程式集區,我們可以看到畫面(圖2),其中包含了3個重要資訊。

  1. 名稱(應用程式集區要使用的名稱)
  2. .NET CLR版本
  3. 受控管線模式
圖2 應用程式集區



CLR全名為Common Language Runtime,中文為通用語言執行平台,如果是使用.NET Framework,需要選取合適的CLR Version,如果是.Net Core,因為不使用CLR,所以可以直接選擇「沒有受控碼」。也因為這樣,所以還要額外安裝dotnet hosting(參考2),安裝完如果在Module有看到AspNetCoreModuleV2,就可以在IIS上執行 .Net Core的服務。

從IIS7開始,受控管線模式分為傳統整合式,整合式讓.NET與IIS可以整合,甚至在.Net中撰寫功能來改變IIS的行為,有興趣可自行Google(參考3)。

站台
在IIS管理員右側,如果不需要新增站台,使用內建好的Default Web Site就好對站台按右鍵再點擊新增應用程式,指定上個步驟建好的應用程式集區,還有程式碼實際的路徑(圖3),這樣就大功告成啦。

 

圖3 新增應用程式


 


IIS強大的設定


在Default Web Site首頁(圖4)中,我們可以看到有很多的設定,阿猩就挑幾個有玩過設定,簡單說明他們可以做些甚麼。

圖4 default web site 首頁

HTTP 回應標頭
目前阿猩使用的IIS,有支援OWASP Secure Headers Project,其中包含一些跟安全性息息相關的設定,例如HSTS、X-Frame-Options等設定,有興趣的可以自行研究一下(參考4)。

 

MIME
可被當作靜態檔案使用的附檔名,如輸入網址後,就可以直接下載某個zip

URL Rewrite
這裡可針對URL及回應的內容進行客製化,例如縮短網址、Reverse Proxy等,除了使用介面操作之外,也可以直接修改web.config,每條rules就是一個設定,程式可能會長得像是

<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTPS}" pattern="off" />
  </conditions>
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>

相關設定跟程式解說,網路上資源蠻多的,一樣就自行Google延伸囉(參考5)
 

紀錄

IIS也可對操作進行紀錄,並進行相關設定(圖5),例如更改log存放的路徑,但記得要對該角色開啟存放路徑該有的操作權限

圖5 紀錄相關設定

 

參考資料

  1. http://blog.e-happy.com.tw/iis-win10-%E5%AE%89%E8%A3%9D-iis-%E7%9A%84%E6%93%8D%E4%BD%9C%E7%AD%86%E8%A8%98/
  2. https://versionsof.net/core/5.0/5.0.9/?fbclid=IwAR2OjDkLSs_-0FUnyL8Ikjp_qRBDgcm2gDOYeBro_AX-3qkgNuOnTlgZDSE
  3. https://www.796t.com/content/1545745717.html
  4. https://owasp.org/www-project-secure-headers/#x-frame-options
  5. https://www.pureexample.com/tw/c-sharp/iis-url-rewrite-basic-rewrite-rules.html