Как настроить общие настройки `system.webServer` для всех сайтов на сервере IIS

Я настраиваю новый веб-сервер в нашей среде хостинга. Это новая виртуальная машина, которая будет использоваться только нами, поэтому я могу делать с ней все, что захочу (в пределах разумного). Он работает под управлением IIS 7 в Windows 2008 R2, а в системе установлен ASP.Net 4.0.

Я бы очень хотел заставить все сайты на сервере использовать следующие system.webServer настройки, если они явно не переопределены, но добавляются в Machine.config или же Web.config файлы в папках конфигурации Framework (как 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 ответ

Смотрите этот вопрос от Serverfault. По-видимому, вы можете указать правила перезаписи для IIS из файла applicationHost.config в C:\WINDOWS\system32\inetsrv\config. Это позволяет управлять и наследовать правила через IIS.

РЕДАКТИРОВАТЬ: ОК, это не работает... попробуйте то, что рекомендуется здесь, посмотрите, имеет ли это значение (принудительное выполнение всех модулей для всех запросов может заставить перезаписывающего устройства правильно подобрать унаследованные параметры перезаписи).

Другие вопросы по тегам