隨手記 - IIS / IIS Express 伺服器 config 檔
2 | 12,480 |
今天在 IIS 看到這幕楞了一下。我知道 web.config 有所謂繼承關係,但 Default Web Site 已是最上層,X-Frame-Options、X-Powered-By 是從哪裡繼承呢?
莫非是 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config?檢查它未包含這類瑣碎設定。後來熊熊想到,IIS 伺服器層級本來就有自己的設定(我又犯傻了),其中便包含 HTTP Response Header:
這就是 Default Web Site 繼承的來源:
除了 IIS 伺服器層級的 ASP.NET 及 IIS 設定,其他如 IIS 有哪些站台、AppPool、虛擬目錄、Web Application,都儲存在一個常被我遺忘的設定檔 - ApplicationHost.config。
另外,各站台、Web Application 與安全相關的設定例如:驗證方式、路徑存取權限、IP 限制等等,基於安全考量不會放在自己的 web.config,而是統一儲存於 applicationHost.confg。延伸閱讀:IIS 與 web.config 的 Windows 驗證設定
IIS 的 applicationHost.confg 位於 C:\Windows\System32\inetsrv\config\applicationHost.config,需管理權限才能存取。大部分設定可透過 IIS 管理員或 PowerShell 管理,需要直接修改檔案的機會不多,我多半把它當成 Hacking 解法的捷徑。
以下是一些我曾查詢或應用的設定:
- system.applicationHost/applicationPools
AppPool 設定 - sites/site/application/virtualDirectory
站台、WebApplication、處擬目錄對映實體位置 - staticContent/mimeType
各副檔名對映的 MIME Type - httpErrors/error
HTTP 狀態 4XX/5XX 對應的錯誤頁面 - 各站台/WebApplication 的認證模式、限制存取 IP 來源(以 location path="..." 區分設定範圍 )
<location path="Default Web Site/WebAppName"> <system.webServer> <security> <authentication> <windowsAuthentication enabled="true" /> <anonymousAuthentication enabled="false" /> </authentication> <ipSecurity allowUnlisted="false"> <add ipAddress="127.0.0.1" allowed="true" /> <add ipAddress="::1" allowed="true" /> </ipSecurity> </security> </system.webServer> </location>
IIS Express 也有自己的 applicationHost.confg,相比之下較常用到。由於 IIS Express 不像 IIS 有完整管理介面,遇到無法啟動或刁鑽的故障,有時修改 C:\Users\userName\Documents\IISExpress\config\applicationHost.config 可以很快解決,若不知這個訣竅,就只能乖乖移除重裝,高下立判,呵。
Simple introduction to IIS/IIS Express applicationHost.config file.
Comments
# by Huang
FTP站台的目錄權限也是繼承,但如果忘了這點就踩雷了,馬上壞掉XD
# by Ellis
感謝分享~