IIS (Internet Information Services) — встроенный веб-сервер Microsoft, доступный в Windows 10/11 Pro и Enterprise. Он дает возможность размещать сайты и веб-приложения локально для разработки и тестирования или в небольшой корпоративной сети. IIS поддерживает ASP.NET, PHP, статические сайты и работает как полноценный production-сервер. Подробнее о настройке брандмауэра при работе с IIS читайте в нашем блоге.
Главное:
- IIS доступен в Windows 10/11 Pro и Enterprise как дополнительный компонент Windows
- Поддерживает ASP.NET Core, ASP.NET Framework, PHP и статические HTML-сайты
- Управление через графическую консоль IIS Manager или PowerShell модуль WebAdministration
- Для HTTPS требуется SSL-сертификат — можно использовать самоподписанный для разработки
Установка IIS через компоненты Windows
IIS не установлен в Windows по умолчанию. Его нужно включить через «Компоненты Windows» или через PowerShell.
Установка через графический интерфейс:
- Откройте Панель управления — Программы — Включение или отключение компонентов Windows
- Найдите «Службы IIS» (Internet Information Services)
- Раскройте узел и выберите нужные компоненты:
- Веб-служба — основной веб-сервер
- Средства веб-управления — консоль IIS Manager
- Общие компоненты HTTP — статический контент, документ по умолчанию, просмотр каталогов
- Разработка приложений — ASP.NET, CGI, ISAPI
- Безопасность — базовая проверка подлинности, Windows Auth
Установка через PowerShell (все основные компоненты):
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole,IIS-WebServer,IIS-CommonHttpFeatures,IIS-HttpErrors,IIS-HttpRedirect,IIS-ApplicationDevelopment,IIS-NetFxExtensibility45,IIS-HealthAndDiagnostics,IIS-HttpLogging,IIS-Security,IIS-RequestFiltering,IIS-Performance,IIS-WebServerManagementTools,IIS-ManagementConsole,IIS-BasicAuthentication,IIS-WindowsAuthentication,IIS-StaticContent,IIS-DefaultDocument,IIS-DirectoryBrowsing -AllПосле установки откройте браузер и перейдите на http://localhost — должна открыться стандартная страница IIS. Лицензионная Windows Pro из нашего каталоге Windows включает полный набор компонентов IIS.
Создание нового сайта в IIS Manager
По умолчанию IIS создает один сайт «Default Web Site» на порту 80. Для размещения нескольких сайтов создайте отдельные сайты с разными портами или именами хостов.
Создание нового сайта:
- Откройте IIS Manager: в поиске введите «inetmgr» или Диспетчер серверов — Средства — Диспетчер служб IIS
- В левой панели разверните сервер и щелкните правой кнопкой «Сайты»
- Выберите «Добавить веб-сайт»
- Заполните поля:
- Имя сайта — понятное название (например mysite.local)
- Пул приложений — выберите существующий или создайте новый
- Физический путь — папка с файлами сайта (например C:\inetpub\mysite)
- Привязка — протокол (http/https), IP-адрес (или *), порт (80, 8080 и т.д.), имя хоста
Создание сайта через PowerShell:
Import-Module WebAdministration
# Создать папку сайта
New-Item -Path "C:inetpubmysite" -ItemType Directory -Force
# Создать сайт
New-Website -Name "MySite" -PhysicalPath "C:inetpubmysite" -Port 8080 -Force
# Создать пул приложений
New-WebAppPool -Name "MySitePool"
# Привязать сайт к пулу
Set-ItemProperty -Path "IIS:SitesMySite" -Name applicationPool -Value "MySitePool"После создания разместите файлы сайта в указанной физической папке и откройте сайт в браузере по адресу http://localhost:8080.
Настройка HTTPS и SSL-сертификатов
Для работы HTTPS нужен SSL-сертификат. В разработке используют самоподписанный сертификат, в production — сертификат от доверенного центра.
Создание самоподписанного сертификата в IIS Manager:
- В IIS Manager выберите сервер (корневой узел)
- В центральной панели откройте «Сертификаты сервера»
- В правой панели нажмите «Создать самозаверяющий сертификат»
- Введите понятное имя (например localhost-dev)
- Выберите хранилище «Личное» и нажмите OK
Добавление HTTPS-привязки к сайту:
- В IIS Manager выберите сайт
- В правой панели нажмите «Привязки»
- Нажмите «Добавить»
- Тип: https, Порт: 443
- Выберите созданный сертификат
- Нажмите OK
Создание сертификата и настройка HTTPS через PowerShell:
# Создать самоподписанный сертификат
$cert = New-SelfSignedCertificate -DnsName "localhost","mysite.local" -CertStoreLocation "cert:LocalMachineMy" -NotAfter (Get-Date).AddYears(5)
# Добавить HTTPS привязку
New-WebBinding -Name "MySite" -Protocol "https" -Port 443 -SslFlags 0
$cert | New-Item "IIS:SslBindings*!443"Для production-сертификата от Let’s Encrypt используйте утилиту win-acme (wacs.exe) которая автоматически получает и обновляет бесплатные сертификаты для IIS. Подробнее о настройке брандмауэра для корректной работы HTTPS.
Пулы приложений и безопасность IIS
Пулы приложений (Application Pools) изолируют веб-приложения друг от друга. Каждый пул работает в отдельном процессе w3wp.exe с собственными правами.
Настройка пула приложений:
- Версия .NET CLR — для ASP.NET Core выберите «Без управляемого кода», для ASP.NET Framework — v4.0
- Режим конвейера — Integrated (рекомендуется) или Classic (для старых приложений)
- Удостоверение — ApplicationPoolIdentity (безопасно), NetworkService или конкретная учетная запись
- Перезапуск — настройте расписание перезапуска для предотвращения утечек памяти
Настройка прав на папку сайта:
# Предоставить права пулу приложений на папку сайта
# Формат учетной записи: IIS AppPoolИмяПула
icacls "C:inetpubmysite" /grant "IIS AppPoolMySitePool:(OI)(CI)M"Основные настройки безопасности:
- Отключите просмотр каталогов: в IIS Manager — «Просмотр каталогов» — Отключить
- Настройте ограничения запросов в «Фильтрация запросов»
- Включите динамическое сжатие для ускорения сайта
Пример файла web.config с базовыми настройками безопасности:
<configuration>
<system.webServer>
<security>
<requestFiltering removeServerHeader="true" />
</security>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
<add name="X-Content-Type-Options" value="nosniff" />
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>Диагностика и логирование IIS
IIS ведет детальные логи всех запросов и ошибок. Умение работать с ними — ключевой навык при диагностике проблем.
Расположение логов по умолчанию:
- Логи сайтов:
C:inetpublogsLogFilesW3SVC1(цифра меняется по ID сайта) - Логи ошибок HTTP:
C:WindowsSystem32LogFilesHTTPERR - Трассировка неудачных запросов:
C:inetpublogsFailedReqLogFiles
Включение подробного логирования ошибок (Failed Request Tracing):
- В IIS Manager выберите сайт
- Откройте «Отслеживание неудавшихся запросов» — Изменить параметры сайта
- Включите трассировку и укажите папку и максимальное число файлов
- Нажмите «Добавить» для настройки правила трассировки (например все ответы 500-599)
Анализ логов IIS через PowerShell:
# Найти все запросы с кодом 500 за сегодня
$logPath = "C:inetpublogsLogFilesW3SVC1"
$today = (Get-Date -Format "yyMMdd")
$logFile = Get-ChildItem $logPath -Filter "*$today*" | Select-Object -Last 1
Get-Content $logFile.FullName | Where-Object {$_ -match " 500 "} | Select-Object -Last 20Типичные проблемы и решения:
- Ошибка 403 Forbidden — нет прав на папку или отключен документ по умолчанию
- Ошибка 503 Service Unavailable — пул приложений остановлен. Проверьте в IIS Manager и запустите
- Сайт недоступен снаружи — разрешите порт в брандмауэре Windows. Подробнее о настройке брандмауэра
Ознакомьтесь с официальной документацией по архитектуре IIS и справочником web.config на Microsoft Learn.
Полезные ссылки и материалы
Для решения задач, описанных в этой статье, могут пригодиться:
- Руководство по настройке восстановления загрузчика
Официальная документация: Microsoft Learn: управление Windows.
Часто задаваемые вопросы
Можно ли установить IIS на Windows 11 Home?
Нет. IIS доступен только в Windows 10/11 Pro, Enterprise и Education. В Home-редакции компонент отсутствует. Альтернатива для Home — использовать nginx, Apache или XAMPP для локальной разработки.
Чем IIS отличается от nginx и Apache?
IIS — продукт Microsoft, глубоко интегрированный с Windows, Active Directory и .NET. Лучший выбор для ASP.NET-приложений. nginx и Apache кросс-платформенные и часто используются для PHP и Node.js. В Windows IIS обычно производительнее для Microsoft-стека.
Как разместить PHP-сайт на IIS?
Скачайте PHP для Windows с php.net, установите модуль CGI в компонентах IIS, зарегистрируйте PHP как FastCGI-обработчик через IIS Manager или командой appcmd. Подробная инструкция есть в документации PHP на сайте php.net/manual.
Нужен ли IIS если я использую Docker на Windows?
Нет. Docker Desktop на Windows запускает веб-серверы в контейнерах независимо от IIS. IIS нужен для приложений работающих непосредственно на хостовой Windows без контейнеризации, или для использования Windows Authentication с корпоративным AD.



