今年 30 天的旅程也到了尾聲了,今天就是第 30 天。冗長的感想留到最後再來說,我們先好好地整理一下這 30 我們一起走過那些地方吧。
還記得我在第一天聊到的那個問題嗎?就是那個簡單的問題:IIS 是什麼?聽到這個問題的第一反應,你腦海裡有哪些知識湧出來呢?現在的你說出來的答案和 30 天會有什麼不同嗎?
有的話,這就是這 30 天來的積累吧!認知的越多,理解的方式就會越不一樣,見山是山,見山不是山,見山又是山的感覺,講得很玄,但學習一個主題能走到後面一些的話,不外如此。
IIS 基本上就是 Windows 中協助提供網路相關操作的整合介面,IIS Manager 是我們用來便於操作與其相關行為與設定的 GUI 程式。在 Day1 中我們簡單的介紹了 IIS 是什麼,讓沒有概念的人能夠對這 30 天即將到來的主題有個概略全貌的認知。
Day2 我們聊到怎麼設置我們要用的環境,例子中以 Azure 為例,幫助手邊沒有合適環境的人也能架起 Windows Server,以及開啟 IIS Manager 的介面,到這邊為止,熱身運動算是告一個段落。
關於網站,網站是 IIS 中個別應用程式會依附的層級,Day3 把操作介面拆分,介紹各個部分分屬什麼功能,模組顯示、瀏覽方式切換、基本操作、網站管理等,也展示了該如何建立一個網站。Day4 的內容深入探討網站上的那些屬性的實際意義,讓 Request 能導向正確網站的 Binding, Binding 裡的 Http、 Https Protocol,也探討了 Site、 Application、 Virtual Directory 三者的關係與異同。
深入了解更多網站的進階設定放在 Day13,關於網站的存取限制、HSTS、Preload 等等都有提過,重要的 FREB log trace 則是在 Day26 和 Day27 提到該怎麼設定與判讀內容。
網站跑起來實際依存於一個 Process,該 Process 會長怎麼樣、什麼時候進行回收,請你在 Day5 先和 Application Pool 來相互了解一下,如果一開始就什麼都想了解可能會暈頭轉向,進階設定我們放在後面一些的地方,是 Day14 和 Day15,Process 起來的細部設置跟原則我都放在那兒了,去找吧、我要成為海賊王。
對 IIS 與 Request 的互動方式並不瞭解?Day6 告訴你人多力量大,一個成功的 IIS 背後都有好多的服務在支撐它的,Day7 中聊到幾個比較重要的服務,如 WAS、W3SVC 怎麼扮演好他們的角色,讓 Process 被起起來、Request 能拿到正確的回應。
有開始就有結束,也許還有重新開始,Day8 分享了大家最愛的重啟大法,在 IIS 裡怎麼讓網站 / 服務重啟,各個重啟方式的影響層面又有多廣,了解區別,才能在合適的時候用對方法。
程式要運行、要靈活,很多東西就不能寫死,而是要去讀設定,IIS 也不例外 Day9 在聊關於設定檔的概念與格式,有哪些重要的設定檔如 ApplicationHost.config、 Web.config 等等,Day10 則是直接以 ApplicationHost.config 這個最常檢查之一的設定檔為例,實際看看設定檔的結構與各項項目的作用、格式寫法等等。儘管設定檔是能被當作純文字檔案,但鑑於手殘把 Syntax 弄壞可能就會整個網站掛掉、很多設定基本都要靠文件才知道,Day11 介紹了 IIS 提供的 Configuration Editor,透過內建的方式去更改設定,更安全也有更多資訊。
既然設定檔這麼重要,為了防止設定檔被來路不明的傢伙給改了還不知道是誰下的手,總是要留下一點痕跡 Day12 分享了透過 Windows 的 Event System 開啟對設定檔的 Auditing,開啟 Auditing 後,對網站的存取修改就有了痕跡。
FTP獨立抽了一篇出來分享,對檔案傳輸站點的架設有好奇?Day16 能夠滿足你。
IIS 裡有各種模組,我們 30 天內聊了很多模組,我抽了幾個經驗上比較容易使用到的模組出來和大家分享。畢竟 IIS 主要更多還是協調 Request 的往來,有往來,那要知道是誰在往來,Day17 的 Authentication 裡寫著關於 IIS 對身分驗證提供方法,有了身分,那每個身分能有哪些權限,或有那些限制呢?Day20 除了授權以外,還有透過 IP 跟 Domain 來做限制的相關設置。如果身分先暫放一邊,我們單純針對 Request 的資訊來限制行為,可以參考 Day18 的 Request Filtering 功能,選擇哪些 Request 能過、哪些不能過,對安全性來說很重要。
其他關於 Day19 的 Default Document 和 Error Page,能夠對 Application 的行為做操作;Day21 的 Url Rewrite 則是應用廣泛的模組,如果要對 URL 操作刪改資訊,它是你必要的插件。Day22 介紹了關於 SSL Certificate 的基本概念,對於現在 Https 被廣泛實用的情況,了解一下這些觀念,處理問題時更容易找到切入點。
只要有人開發,那就會有問題,問題不可避,那應該要學習的是怎麼跟問題好好相處,Day23 聊到關於 HTTP status code 相關的錯誤,就是最廣泛且應該被熟知的概念。IIS 出問題基本就幾個會看的,Day24 的 IIS Log,Day25 的 Event Viewer, FREB 更是拆成 Day26, Day27,兩篇篇幅來講,掌握這些基本的 Log 檔,能夠幫助定位、縮小問題範圍,更能知道下一步該怎麼走,或有該怎麼減輕問題的線索。
最後的最後,分享了兩篇的 Best Practice,Day28,Day29,討論了一下各種情況下的設定該怎麼調整,能讓整個情境更立體一點,收尾了這次 30 天的 IIS 分享。
正文大概到這裡,如果這是你第一篇看的系列文章,這篇可以幫助你快速定位到你想看的文章內容,也了解到我當初怎麼規劃這 30 篇的篇幅,與篇幅間的關係、篇幅目的。
老實說對於寫文章的人 30 天是一種推進動力,也是一種壓力,每天要定時抽出足夠的時間寫出有一定質量的文章並不是件容易的事,像我自己也不太有時間可以把每一篇都好好反覆看過再發,所以之後有空,我會再一一看過,把文章修的順一些、補充沒寫到的一些例子。希望這次的系列文,能幫助到對 IIS 有所疑問的讀者,也許不一定完全明白,但有些概念、有些能夠參考的文件,30天 IIS 面面觀的旅程,到此結束,但和 IIS 相處的日子,還會繼續下去吧,感謝讀到這裡的各位。