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