建議你在閱讀本文之前,先閱讀IIS使用指南之一 :IIS 6 新特性一文,只有當你了解IIS 6的新特性后,才能更好的使用它。如非特別說明,本文中所有涉及的IIS均指Windows Server 2003中提供的IIS 6。 安裝IIS 在安裝IIS之前,你需要考慮如何增強IIS服務(wù)器的安全性,首先的一點就是減少IIS服務(wù)器的攻擊面。在IIS服務(wù)器上你首先應(yīng)該安全配置Windows服務(wù)器;使用NTFS文件格式;盡可能少的安裝其他網(wǎng)絡(luò)服務(wù);停止不相關(guān)的服務(wù);并且只是安裝需要的IIS組件。 安裝IIS的過程很簡單,點擊開始,指向控制面板,選擇添加或刪除程序,然后點擊添加/刪除Windows組件,在彈出的Windows組件向?qū)?/strong>對話框,勾選應(yīng)用程序服務(wù)器下的Internet信息服務(wù)(IIS)即可。需要注意的是,從安全性考慮,在Windows Server 2003中安裝IIS時,默認只會安裝IIS的部分組件而不是全部,安裝的組件如下表所示: 默認安裝的IIS組件說明
默認安裝的萬維網(wǎng)服務(wù)組件說明
如果你只是想提供Web服務(wù),那么IIS安裝的默認組件已經(jīng)完全滿足你的需求。在此我僅安裝Web服務(wù)組件,所以勾選Internet信息服務(wù)(IIS)后依次點擊確定,然后在Windows組件向?qū)?/strong>對話框上點擊下一步,此時Windows服務(wù)器開始IIS組件的安裝,安裝過程中可能提示你插入安裝光盤,當安裝完成后IIS就安裝好了。 配置IIS 通常情況下對于IIS本身我們需要做的配置不多,主要集中在以下幾個方面:
配置IIS的應(yīng)用程序隔離模式 我們在IIS使用指南之一 :IIS 6 新特性中介紹過,默認情況下IIS 6工作在工作進程隔離模式下,如果你的Web應(yīng)用程序不能兼容此模式,那么你需要將IIS 6配置為工作在IIS 5 隔離模式下,配置過程如下: 點擊開始,指向控制面板,然后選擇Internet信息服務(wù)(IIS)管理器,在彈出的Internet信息服務(wù)(IIS)管理器上右擊網(wǎng)站文件夾,選擇屬性,然后在彈出的網(wǎng)站屬性對話框上點擊服務(wù)標簽,在隔離模式下勾選以IIS 5.0隔離模式運行WWW服務(wù)即可,需要重啟整個IIS服務(wù)。
配置HTTP壓縮 如上圖中的配置,你可以看到IIS 6支持HTTP壓縮。HTTP壓縮是一種犧牲CPU性能來降低帶寬消耗的功能,如果IIS中啟用了HTTP壓縮并且客戶端瀏覽器支持HTTP壓縮,那么IIS在傳送文件之前,會對數(shù)據(jù)進行壓縮后再進行傳送。它的工作原理是這樣的: IIS接收到客戶端瀏覽器發(fā)送的請求時,將檢查客戶端瀏覽器是否支持HTTP壓縮;然后IIS檢查客戶端瀏覽器請求的文件的擴展名,以確定請求的文件為靜態(tài)文件或包含動態(tài)內(nèi)容。
壓縮靜態(tài)文件所消耗的CPU性能較少,并且通常只需要壓縮一次,然后就保存在緩存的臨時目錄中;壓縮動態(tài)內(nèi)容的代價要高一些,因為它們并不存儲在臨時目錄中,并且每次請求時都必須重新生成。推薦你只壓縮靜態(tài)文件,而不壓縮應(yīng)用程序文件。當然,如果你認為與CPU性能消耗相比你更在乎帶寬的利用率,那么也可以壓縮應(yīng)用程序文件;微軟建議在CPU利用率已經(jīng)達到80%以上時,不對應(yīng)用程序文件進行壓縮。 當配置HTTP壓縮時,根據(jù)你的需要選擇壓縮靜態(tài)文件和壓縮應(yīng)用程序文件,如果要壓縮應(yīng)用程序文件,則必需勾選壓縮靜態(tài)文件,然后輸入壓縮后的內(nèi)容的緩存臨時目錄,默認為%windir%\IIS Temporary Compressed Files,然后輸入所存儲的壓縮內(nèi)容的最大容量即可,默認為不受限制。
配置MIME類型 從安全性上考慮,IIS 6中只是定義了常見的MIME類型(文件擴展名),而沒有和IIS 5一樣包含通配符MIME映射。這樣當客戶端瀏覽器從IIS 6 Web服務(wù)器上請求某個文件時,如果該文件的擴展名并沒有在IIS的MIME類型中進行定義,IIS 會返回404錯誤-文件或目錄未找到。對于使用Access數(shù)據(jù)庫的站點,為了防止別人下載Access數(shù)據(jù)庫,有些文章中介紹了將Access數(shù)據(jù)庫改名為.asp來防止下載的方法,這并不安全,最好的辦法就是將Access數(shù)據(jù)庫的擴展名修改為MIME類型中未定義的擴展名,這樣別人就無法訪問此數(shù)據(jù)庫。 當然,有時你需要添加MIME類型。你可以在IIS全局、網(wǎng)站、單個網(wǎng)站這三個級別上添加MIME類型,默認的MIME類型定義在IIS全局屬性中,而網(wǎng)站屬性中定義的MIME類型可以覆蓋所有網(wǎng)站中的MIME類型定義,在單個網(wǎng)站上定義的MIME類型只會影響此站點。 在IIS全局上添加MIME類型的過程如下: 在IIS管理控制臺中右擊服務(wù)器名,然后選擇屬性;
在彈出的計算機屬性對話框上點擊MIME類型按鈕;
在MIME類型對話框中,你可以創(chuàng)建、修改、刪除MIME類型,在此我為ISO文件創(chuàng)建一個MIME類型,點擊新建按鈕;
在擴展名欄中,鍵入對應(yīng)的文件擴展名.iso,如果你不輸入“.”(例如只輸入ISO),那么IIS會自動為你添加;如果你想添加通配符MIME映射,即允許訪問任何沒有MIME類型定義的文件,則在擴展名欄輸入“*”,不過不推薦使用這種方式。然后在MIME類型欄,輸入application/octet-stream,最后點依次擊確定即可。
而在網(wǎng)站或單個網(wǎng)站上添加MIME類型定義則是右擊網(wǎng)站或單個網(wǎng)站,然后選擇屬性,點擊HTTP頭標簽中的MIME類型按鈕即可進行配置。
配置Web服務(wù)擴展 Web服務(wù)擴展是IIS中用于處理動態(tài)內(nèi)容請求的擴展組件,在IIS中支持以下兩種方式的Web服務(wù)擴展:
它們之間的工作原理基本相同,主要是實現(xiàn)機制不同。ISAPI和CGI之間最大的區(qū)別在于ISAPI擴展基本以動態(tài)鏈接庫的形式存在,而CGI以可執(zhí)行程序形式存在;ISAPI方式運行的Web服務(wù)擴展可以在被用戶請求激活后長駐內(nèi)存,從而減少加載DLL的時間,因此具有比CGI方式更高的效率。 從安全性上考慮,在安裝IIS時,默認情況下會安裝以下四個Web服務(wù)擴展但是并不啟用,因此只能支持靜態(tài)內(nèi)容的訪問:
你可以根據(jù)你的需要添加或刪除自定義的Web服務(wù)擴展,而對于IIS內(nèi)建的Web服務(wù)擴展則只能禁用或啟用。 對于這些內(nèi)置的Web服務(wù)擴展,IIS已經(jīng)為Web站點配置好了應(yīng)用程序映射,你只需要啟用這些Web服務(wù)擴展,就可以在Web站點中啟用對相應(yīng)動態(tài)內(nèi)容的訪問。 如果要啟用某個系統(tǒng)自帶的Web服務(wù)擴展,則在IIS管理控制臺中點擊Web服務(wù)擴展文件夾,然后在右側(cè)窗口中點擊對應(yīng)的Web服務(wù)擴展,點擊允許即可,例如要啟用對ASP頁面的支持,則啟用Active Server Pages即可;
如果要添加自定義的Web服務(wù)擴展,除了需要在Web服務(wù)擴展文件夾中進行添加外,還需要在Web站點中添加應(yīng)用程序映射,我將以后專文進行描述。 配置應(yīng)用程序池 IIS 6的核心在于工作進程隔離模式,而應(yīng)用程序池則是定義工作進程如何進行工作,因此,可以說應(yīng)用程序池是整個IIS 6的核心。 和IIS 5中只能使用單個應(yīng)用程序池不同,工作在工作進程隔離模式的IIS 6可以創(chuàng)建多個應(yīng)用程序池,不同的應(yīng)用程序池之間是完全隔離的,某個應(yīng)用程序池停止服務(wù)時不會影響到其他應(yīng)用程序池。 在使用應(yīng)用程序池之前,你應(yīng)該確定你所需要的應(yīng)用程序池數(shù)量??赡苡泻芏嗯笥褧J為,既然不同的應(yīng)用程序池之間是完全隔離的,那么我只需要為每個Web站點創(chuàng)建一個應(yīng)用程序池就可以了。這個辦法在IIS服務(wù)器上具有較少的Web站點數(shù)量時可以使用,但是如果IIS服務(wù)器上具有很多Web站點數(shù)量,那么這個辦法就不適用了,因為不同的應(yīng)用程序池在被訪問時都會創(chuàng)建各自的工作進程,當大量的工作進程并發(fā)工作時會消耗大量的系統(tǒng)資源和CPU利用率,反而會降低服務(wù)器性能。你應(yīng)該根據(jù)Web站點的重要性、隔離性、所運行代碼的安全性和穩(wěn)定性等來對IIS服務(wù)器上所具有的Web站點進行劃分,然后根據(jù)情況來決定所需要的應(yīng)用程序池數(shù)量。對于那些非常重要的Web站點、需要單獨隔離的Web站點、所運行代碼穩(wěn)定性和安全性并不可靠的Web站點配置為使用各自獨立的應(yīng)用程序池,而將其他普通的Web站點配置為使用一個公共的應(yīng)用程序池。 默認情況下,在安裝IIS時會創(chuàng)建一個默認網(wǎng)站并創(chuàng)建一個名為DefaultAppPool的應(yīng)用程序池為其使用;默認配置下的應(yīng)用程序池已經(jīng)可以很好的進行工作,建議你只有在特別需要時才對應(yīng)用程序池進行配置。
配置應(yīng)用程序池屬性 在IIS管理控制臺中展開應(yīng)用程序池文件夾,然后右擊對應(yīng)的應(yīng)用程序池,點擊屬性,你可以在應(yīng)用程序池的屬性中進行以下配置: 回收 在回收標簽,你可以設(shè)置工作進程的回收方式:
另外需要注意的是,應(yīng)用程序池具有以下兩種工作進程回收方式,不過這兩種回收方式均不會造成Web服務(wù)的中斷:
如果Web應(yīng)用程序不支持多實例運行,那么你必須配置應(yīng)用程序池禁止使用重疊回收方式。此配置無法在IIS管理控制臺中進行修改,只能通過在metabase.xml中修改對應(yīng)應(yīng)用程序池的DisallowOverlappingRotation metabase屬性為true進行。
性能 在性能標簽?zāi)憧梢栽O(shè)置工作進程的運行方式:
運行狀況 在運行狀況標簽?zāi)憧梢耘渲脩?yīng)用程序池監(jiān)視工作進程的運行狀況,
標識 在標識標簽,你可以配置工作進程所運行的用戶賬戶。在IIS 5或者當IIS 6運行在IIS 5隔離模式時,工作進程運行在本地系統(tǒng)賬戶,而運行在工作進程隔離模式下的IIS 6的工作進程運行在網(wǎng)絡(luò)服務(wù)賬戶下,這降低了系統(tǒng)被攻擊的可能性。 你可以配置工作進程運行在預(yù)定義的本地系統(tǒng)、本地服務(wù)或網(wǎng)絡(luò)服務(wù)賬戶下,也可以配置為使用某個自定義的用戶賬戶。建議使用默認的網(wǎng)絡(luò)服務(wù)賬戶;不過如果為了更高的安全性,可以配置使用自定義的用戶賬戶,不過建議你只是將此自定義用戶加入到IIS_WPG用戶組中,因此IIS_WPG用戶組包含了可以啟動和運行工作進程的最小權(quán)限。
創(chuàng)建應(yīng)用程序池 要新建應(yīng)用程序池,在IIS管理控制臺中右擊應(yīng)用程序池文件夾,指向新建,選擇應(yīng)用程序池;
然后在彈出的添加新應(yīng)用程序池對話框,在應(yīng)用程序池ID欄輸入應(yīng)用程序池名,然后選擇使用默認設(shè)置還是繼承現(xiàn)有的應(yīng)用程序池設(shè)置,再點擊確定即可;
分配Web站點到應(yīng)用程序池中 在IIS管理控制臺中展開網(wǎng)站文件夾,右擊對應(yīng)的網(wǎng)站,然后選擇屬性,在彈出的網(wǎng)站屬性對話框上,點擊主目錄標簽,然后在應(yīng)用程序池欄選擇不同的應(yīng)用程序池即可,默認情況下所有網(wǎng)站所使用的應(yīng)用程序均名為默認應(yīng)用程序,如果要想此網(wǎng)站使用不同的應(yīng)用程序名,則在應(yīng)用程序名欄修改即可,例如在此我就修改為winsvr,這主要是便于查看,然后點擊確定即可,
此時,在對應(yīng)的應(yīng)用程序池下就顯示出了對應(yīng)網(wǎng)站的應(yīng)用程序,如下圖所示: |
|