如何为IIS服务器上的所有站点设置共享的`system.webServer`设置

时间:2013-05-14 11:57:52

标签: asp.net iis hosting machine.config

我正在托管环境中设置一个新的网络服务器。这是一个只有我们才能使用的新VM,所以我可以用它来做我想做的事情(在合理范围内)。它在Windows 2008 R2上运行IIS 7,系统上安装了ASP.Net 4.0。

我非常希望强制服务器上的所有网站使用以下system.webServer设置,除非明确覆盖它们,而是将它们添加到Machine.config or Web.config中的Framework config folders个文件中(32位和64位版本)似乎没有任何影响。

我想强制的设置如下。我知道这些设置在单个网站Web.config中正常工作(因为我从我自己配置​​的生产网站复制/粘贴它们),我知道IIS URL Rewrite Module 2已经安装完毕。

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <remove name="X-Powered-By"/>
        </customHeaders>
    </httpProtocol>
    <staticContent>
        <remove fileExtension=".air"/>
        <remove fileExtension=".svg"/>
        <remove fileExtension=".ttf"/>
        <remove fileExtension=".otf"/>
        <remove fileExtension=".woff"/>
        <remove fileExtension=".eot"/>
        <mimeMap fileExtension=".air" mimeType="application/vnd.adobe.air-application-installer-package+zip"/>
        <mimeMap fileExtension=".svg" mimeType="image/svg+xml"/>
        <mimeMap fileExtension=".ttf" mimeType="application/x-font-truetype"/>
        <mimeMap fileExtension=".otf" mimeType="application/x-font-opentype"/>
        <mimeMap fileExtension=".woff" mimeType="application/x-font-woff"/>
        <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject"/>
    </staticContent>
    <rewrite>
        <outboundRules>
            <rule name="Remove RESPONSE_Server">
                <match serverVariable="RESPONSE_Server" pattern=".+"/>
                <action type="Rewrite" value=""/>
            </rule>
        </outboundRules>
    </rewrite>
</system.webServer>

这些设置应该意味着X-Powered-By: HTTP标头不存在且Server:标头为空,但是当我测试它时,我得到以下内容:

[12:35:56] owen@plum:~$ curl -I http://new.server.ip
HTTP/1.1 200 OK
Content-Length: 689
Content-Type: text/html
Last-Modified: Mon, 13 May 2013 15:11:24 GMT
Accept-Ranges: bytes
ETag: "2ce2122ec4fce1:0"
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Tue, 14 May 2013 11:36:16 GMT

我错过了一些明显的东西吗?仅仅是system.webServer部分无法从这些默认配置文件继承吗?

1 个答案:

答案 0 :(得分:1)

Serverfault查看此问题。您可以在C:\ WINDOWS \ system32 \ inetsrv \ config中的applicationHost.config文件中指定IIS范围的重写规则。然后,这允许通过IIS管理和继承规则。

编辑:好的,这不起作用...尝试what's recommended here,看看是否有所不同(强制所有模块为所有请求运行可能会强制重写器正确地获取继承的重写设置) 。