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

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

Я бы очень хотел, чтобы все сайты на сервере использовали следующие настройки system.webServer, если они явно не переопределены, но добавлены в Machine.config или Web.config в папке Папки конфигурации фреймворка (как в 32-разрядной, так и в 64-разрядной версии), похоже, не имеют никакого эффекта.

Настройки, которые я пытаюсь установить, следующие. Я знаю, что эти настройки прекрасно работают на Web.config отдельного сайта (потому что я скопировал/вставил их с рабочего сайта, который настроил сам), и я знаю, что Модуль IIS URL Rewrite 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>

Эти настройки должны означать, что HTTP-заголовок X-Powered-By: отсутствует, а заголовок 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 не может быть унаследован от этих файлов конфигурации по умолчанию?


person Owen Blacker    schedule 14.05.2013    source источник
comment
Попробуйте написать ALL_CAPS? ServerVariables обычно все в верхнем регистре.   -  person Jamie Howarth    schedule 14.05.2013
comment
Нет, выдержка не проблема, как я уже упоминал в вопросе, это выдержка из конфигурации, которая, как я знаю, работает в другом месте. (И нет, заголовки не ALL_CAPS в HTTP, только когда мы обращаемся к ним из ASP или ASP.Net.)   -  person Owen Blacker    schedule 14.05.2013


Ответы (1)


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

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

person Jamie Howarth    schedule 14.05.2013
comment
Боюсь, это тоже не имело никакого значения. - person Owen Blacker; 14.05.2013
comment
Для протокола: вы также предложили мне проверить тот же файл в C:\Windows\SysWOW64\inetsrv\Config, но это также не решает проблему. - person Owen Blacker; 14.05.2013
comment
В applicationHost.config нет раздела <modules/>; добавление этого атрибута к узлу <globalModules/> не имеет никакого значения. (И, что интересно, каждый раз, когда я редактирую system32 applicationHost.config, IIS редактирует SysWOW64 одинаково.) - person Owen Blacker; 14.05.2013