Server 24 марта 2026 12 мин чтения
ЕС
Евгений Семёнов
Генеральный директор ООО АйТи Фреш · 15+ лет в IT

IIS: установка и настройка веб-сервера в Windows Server

IIS: установка и настройка веб-сервера в Windows Server

Internet Information Services (IIS) — встроенный веб-сервер Microsoft, который входит в состав всех серверных редакций Windows. Он используется для размещения веб-сайтов, веб-приложений, REST API, а также служит платформой для таких корпоративных сервисов, как Exchange OWA, ADFS, WSUS, SCCM и Remote Desktop Gateway. В отличие от Apache или Nginx, IIS тесно интегрирован с экосистемой Windows: Active Directory, групповые политики, Windows Authentication и .NET Framework.

В этом руководстве мы подробно рассмотрим установку роли IIS через Server Manager и PowerShell, разберём архитектуру модулей, настроим пулы приложений, опубликуем несколько сайтов на одном сервере, подключим SSL-сертификат и настроим мониторинг. Все примеры приведены для Windows Server 2019/2022, но применимы и к более ранним версиям.

Что такое IIS и зачем он нужен

IIS (Internet Information Services) — это полнофункциональный веб-сервер, встроенный в Windows Server. Основные сценарии использования:

IIS поддерживает протоколы HTTP/1.1, HTTP/2 и HTTP/3 (QUIC) начиная с Windows Server 2022. Для внутренних корпоративных сервисов IIS часто предпочтительнее Nginx или Apache, поскольку он нативно интегрирован с Active Directory и Windows Authentication.

Установка IIS через Server Manager

Самый наглядный способ установки IIS — через графическую консоль Server Manager:

  1. Откройте Server ManagerManageAdd Roles and Features
  2. На шаге Installation Type выберите Role-based or feature-based installation
  3. Выберите целевой сервер
  4. На шаге Server Roles установите флажок Web Server (IIS)
  5. Подтвердите установку сопутствующих компонентов (IIS Management Console)
  6. На шаге Role Services выберите нужные модули (см. следующий раздел)
  7. Нажмите Install и дождитесь завершения

После установки откройте браузер и перейдите по адресу http://localhost — вы увидите стандартную страницу приветствия IIS. Корневая директория сайта по умолчанию: C:\inetpub\wwwroot.

Установка IIS через PowerShell

Для автоматизации и развёртывания на Server Core используйте командлет Install-WindowsFeature. Установка базовой роли IIS:

Install-WindowsFeature -Name Web-Server -IncludeManagementTools

Эта команда установит роль Web Server с консолью управления IIS Manager. Для установки расширенного набора компонентов:

# Установка IIS с расширенным набором модулей
Install-WindowsFeature -Name `
    Web-Server, `
    Web-Common-Http, `
    Web-Static-Content, `
    Web-Default-Doc, `
    Web-Dir-Browsing, `
    Web-Http-Errors, `
    Web-App-Dev, `
    Web-Asp-Net45, `
    Web-Net-Ext45, `
    Web-ISAPI-Ext, `
    Web-ISAPI-Filter, `
    Web-Security, `
    Web-Filtering, `
    Web-Windows-Auth, `
    Web-Mgmt-Tools, `
    Web-Mgmt-Console `
    -IncludeManagementTools -Restart
Флаг -Restart автоматически перезагрузит сервер, если какой-либо компонент этого требует. На продакшен-сервере используйте его осторожно — лучше перезагрузить вручную в плановое окно обслуживания.

Проверить установленные компоненты IIS:

Get-WindowsFeature -Name Web-* | Where-Object Installed | Format-Table Name, InstallState

Архитектура модулей IIS

IIS построен по модульной архитектуре — каждую функциональность можно включить или отключить независимо. Основные группы модулей:

Не устанавливайте все модули подряд — каждый дополнительный модуль увеличивает поверхность атаки. Следуйте принципу минимальных привилегий: ставьте только то, что реально необходимо вашему приложению.

Для просмотра всех доступных модулей IIS в PowerShell:

Get-WindowsFeature -Name Web-* | Format-Table Name, DisplayName, InstallState

Настройка пулов приложений (Application Pools)

Пул приложений (Application Pool) — изолированный процесс w3wp.exe, в котором работает ваш сайт или приложение. Каждый пул имеет собственные настройки идентификации, версии .NET, режима конвейера и лимитов ресурсов.

Создание нового пула через PowerShell (модуль WebAdministration):

Import-Module WebAdministration

# Создать новый пул приложений
New-WebAppPool -Name "MyAppPool"

# Настроить параметры пула
Set-ItemProperty "IIS:\AppPools\MyAppPool" -Name "managedRuntimeVersion" -Value "v4.0"
Set-ItemProperty "IIS:\AppPools\MyAppPool" -Name "managedPipelineMode" -Value "Integrated"
Set-ItemProperty "IIS:\AppPools\MyAppPool" -Name "processModel.identityType" -Value "ApplicationPoolIdentity"

# Включить автоматический перезапуск при превышении памяти (в КБ)
Set-ItemProperty "IIS:\AppPools\MyAppPool" -Name "recycling.periodicRestart.privateMemory" -Value 1048576
Для приложений на .NET Core / .NET 6+ установите managedRuntimeVersion в пустую строку и используйте модуль ASP.NET Core Module (ANCM). Он запускает приложение как отдельный процесс Kestrel за обратным прокси IIS.

Создание и публикация сайта

По умолчанию IIS создаёт один сайт Default Web Site с привязкой к порту 80 на всех IP. Для создания нового сайта через PowerShell:

# Создать директорию сайта
New-Item -Path "C:\WebSites\mysite.ru" -ItemType Directory -Force

# Создать сайт в IIS
New-IISSite -Name "mysite.ru" `
    -PhysicalPath "C:\WebSites\mysite.ru" `
    -BindingInformation "*:80:mysite.ru"

# Привязать сайт к пулу приложений
Set-ItemProperty "IIS:\Sites\mysite.ru" -Name "applicationPool" -Value "MyAppPool"

Если нужно разместить несколько сайтов на одном IP и порту, используйте Host Header (имя хоста). IIS определяет, какой сайт обслужить, по заголовку Host в HTTP-запросе:

# Добавить привязку с другим именем хоста
New-IISSiteBinding -Name "mysite.ru" -BindingInformation "*:80:www.mysite.ru" -Protocol http

Просмотр всех сайтов и их привязок:

Get-IISSite | Select-Object Name, State, Bindings | Format-List

Настройка SSL-сертификата

Для защиты веб-трафика необходимо установить SSL-сертификат и настроить привязку HTTPS на порт 443. Создание самоподписанного сертификата (для тестовых целей):

# Создать самоподписанный сертификат
$cert = New-SelfSignedCertificate `
    -DnsName "mysite.ru","www.mysite.ru" `
    -CertStoreLocation "Cert:\LocalMachine\My" `
    -NotAfter (Get-Date).AddYears(2)

# Привязать HTTPS к сайту
New-IISSiteBinding -Name "mysite.ru" `
    -BindingInformation "*:443:mysite.ru" `
    -Protocol https `
    -CertificateThumbPrint $cert.Thumbprint `
    -CertStoreLocation "Cert:\LocalMachine\My"
Самоподписанные сертификаты подходят только для тестирования и внутренних сервисов. Для публичных сайтов используйте сертификаты от доверенных центров сертификации (Let's Encrypt, DigiCert, Sectigo) или внутреннего корпоративного CA (Active Directory Certificate Services).

Для настройки автоматического редиректа HTTP → HTTPS установите модуль URL Rewrite и добавьте правило в web.config:

<rewrite>
  <rules>
    <rule name="HTTP to HTTPS" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="off" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

Безопасность и фильтрация запросов

IIS включает мощный модуль Request Filtering, который защищает сервер от типичных атак без установки стороннего WAF:

Пример настройки ограничения IP через PowerShell:

# Разрешить доступ только из корпоративной сети
Set-WebConfigurationProperty -Filter "system.webServer/security/ipSecurity" `
    -Name "allowUnlisted" -Value $false -PSPath "IIS:\Sites\mysite.ru"

Add-WebConfigurationProperty -Filter "system.webServer/security/ipSecurity" `
    -Name "." -Value @{ipAddress="192.168.1.0";subnetMask="255.255.255.0";allowed="true"} `
    -PSPath "IIS:\Sites\mysite.ru"

Логирование и мониторинг

IIS ведёт подробные логи доступа в формате W3C Extended Log. По умолчанию логи хранятся в C:\inetpub\logs\LogFiles. Настройка расширенного логирования:

# Включить расширенные поля лога
Set-WebConfigurationProperty -Filter "system.applicationHost/sites/site[@name='mysite.ru']/logFile" `
    -Name "logExtFileFlags" `
    -Value "Date,Time,ClientIP,UserName,Method,UriStem,UriQuery,HttpStatus,TimeTaken,UserAgent,Referer"

Для мониторинга производительности IIS используйте счётчики Performance Monitor:

Для централизованного мониторинга IIS в крупной инфраструктуре используйте IIS Failed Request Tracing (FREB) — он записывает детальную трассировку только для запросов, которые завершились ошибкой или выполнялись дольше заданного порога. Это незаменимый инструмент при диагностике ошибок 500.

Управление IIS из командной строки

Помимо PowerShell, IIS предоставляет утилиту командной строки appcmd.exe, которая особенно полезна на Server Core:

REM Список всех сайтов
%systemroot%\system32\inetsrv\appcmd.exe list site

REM Остановить сайт
appcmd stop site /site.name:"mysite.ru"

REM Запустить сайт
appcmd start site /site.name:"mysite.ru"

REM Перезапустить пул приложений
appcmd recycle apppool /apppool.name:"MyAppPool"

REM Просмотр текущих запросов
appcmd list request

Для удалённого управления несколькими серверами IIS используйте IIS Management Service (WMSVC). Включите его через PowerShell:

Install-WindowsFeature -Name Web-Mgmt-Service
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WebManagement\Server" -Name "EnableRemoteManagement" -Value 1
Start-Service WMSVC
Set-Service WMSVC -StartupType Automatic

Резервное копирование конфигурации

Вся конфигурация IIS хранится в файле %systemroot%\system32\inetsrv\config\applicationHost.config. Для создания резервной копии:

# Создать именованный бэкап конфигурации IIS
appcmd add backup "BeforeChanges_$(Get-Date -Format 'yyyyMMdd')"

# Список всех бэкапов
appcmd list backup

# Восстановление из бэкапа
appcmd restore backup "BeforeChanges_20260324"
Перед любыми изменениями конфигурации IIS на продакшен-сервере обязательно создавайте бэкап через appcmd add backup. Восстановление занимает секунды и может спасти от часов простоя.

Типичные проблемы и их решение

При работе с IIS администраторы чаще всего сталкиваются со следующими ситуациями:

Для диагностики запускайте Failed Request Tracing:

# Включить трассировку для ошибок 500
Enable-WebRequestTracing -Name "mysite.ru"
Add-WebConfigurationProperty -Filter "system.webServer/tracing/traceFailedRequests" `
    -Name "." -PSPath "IIS:\Sites\mysite.ru" `
    -Value @{path="*";provider="ASP,ISAPI Extension,WWW Server";statusCodes="500";timeTaken="00:00:30"}

IIS — это зрелая, надёжная и хорошо задокументированная платформа для размещения веб-приложений в экосистеме Windows. Правильная установка с минимальным набором модулей, настройка изолированных пулов приложений, SSL-шифрование и регулярный мониторинг логов обеспечат стабильную и безопасную работу ваших сервисов. Если вашей компании требуется развёртывание или администрирование IIS, настройка отказоустойчивого кластера веб-серверов или миграция приложений — специалисты IT-аутсорсинговой компании ITfresh готовы взять эти задачи на себя.

Официальная документация: Microsoft Learn — Windows Server, Microsoft Learn — PowerShell

Часто задаваемые вопросы

Что такое IIS: установка и настройка веб-сервера в Windows Server?

IIS: установка и настройка веб-сервера в Windows Server — это важный аспект системного администрирования, который позволяет настроить и оптимизировать работу IT-инфраструктуры. В данной статье подробно рассматриваются все ключевые моменты.

Как правильно настроить IIS: установка и настройка веб-сервера в Windows Server?

Для корректной настройки IIS: установка и настройка веб-сервера в Windows Server необходимо следовать пошаговой инструкции, представленной в статье выше. Важно учитывать особенности вашей инфраструктуры и требования безопасности.

Какие типичные ошибки возникают при работе с IIS: установка и настройка веб-сервера в Windows Server?

Наиболее частые ошибки при работе с IIS: установка и настройка веб-сервера в Windows Server: некорректная конфигурация, недостаточные права доступа и несовместимость версий. Рекомендуем обратиться к специалистам ITFresh для профессиональной настройки.

ООО АйТи Фреш

Возьмём это на себя

Настройка и администрирование — наша ежедневная работа. 15+ лет опыта, собственная инфраструктура, сертифицированные инженеры.

15+лет опыта
25+клиентов
8серверов Dell