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. Основные сценарии использования:
- Корпоративные веб-приложения — размещение внутренних порталов, CRM, ERP на базе ASP.NET и .NET Core
- Публичные сайты — хостинг сайтов на ASP.NET, PHP, Python, Node.js
- Инфраструктурные сервисы — WSUS, SCCM, ADFS, Exchange OWA, Remote Desktop Web Access
- Reverse proxy — балансировка нагрузки через модуль ARR (Application Request Routing)
- FTP-сервер — IIS включает встроенный FTP-сервер с поддержкой FTPS
Установка IIS через Server Manager
Самый наглядный способ установки IIS — через графическую консоль Server Manager:
- Откройте Server Manager → Manage → Add Roles and Features
- На шаге Installation Type выберите Role-based or feature-based installation
- Выберите целевой сервер
- На шаге Server Roles установите флажок Web Server (IIS)
- Подтвердите установку сопутствующих компонентов (IIS Management Console)
- На шаге Role Services выберите нужные модули (см. следующий раздел)
- Нажмите 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 построен по модульной архитектуре — каждую функциональность можно включить или отключить независимо. Основные группы модулей:
- Common HTTP Features — статический контент, документ по умолчанию, просмотр каталогов, страницы ошибок
- Application Development — ASP.NET 4.x, .NET Extensibility, CGI, ISAPI, WebSocket Protocol
- Health and Diagnostics — HTTP Logging, Request Monitor, Tracing
- Security — Request Filtering, Windows Authentication, Basic Authentication, URL Authorization, IP Address Restrictions
- Performance — Static Content Compression, Dynamic Content Compression
- Management Tools — IIS Management Console, IIS Management Scripts and Tools
Для просмотра всех доступных модулей 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
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"
Для настройки автоматического редиректа 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:
- Ограничение длины URL — по умолчанию 4096 байт, предотвращает buffer overflow
- Блокировка расширений файлов — запрет доступа к .config, .cs, .vb, .mdf
- Ограничение HTTP-методов — разрешить только GET, POST, HEAD
- Фильтрация query string — блокировка подозрительных паттернов
- IP Address Restrictions — белый/чёрный список IP-адресов
Пример настройки ограничения 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:
Web Service\Current Connections— текущее количество подключенийWeb Service\Bytes Total/sec— пропускная способностьASP.NET\Requests Queued— очередь запросов (должно быть близко к 0)W3SVC_W3WP\Active Requests— активные запросы в каждом пуле
Управление 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"
appcmd add backup. Восстановление занимает секунды и может спасти от часов простоя.Типичные проблемы и их решение
При работе с IIS администраторы чаще всего сталкиваются со следующими ситуациями:
- Ошибка 503 Service Unavailable — пул приложений остановлен. Проверьте Event Log (Application) на наличие ошибок w3wp.exe и перезапустите пул
- Ошибка 500.19 — синтаксическая ошибка в web.config. Проверьте XML и убедитесь, что все используемые модули установлены
- Ошибка 401 Unauthorized — неправильно настроена аутентификация. Проверьте, что нужный метод (Anonymous, Windows, Basic) включён для сайта
- Сайт не запускается (порт занят) — используйте
netstat -anb | findstr :80для поиска процесса, занимающего порт - Медленная работа — проверьте счётчик Requests Queued и настройте recycling пула по расписанию или по порогу памяти
Для диагностики запускайте 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+ лет опыта, собственная инфраструктура, сертифицированные инженеры.