IIS (Internet Information Services) — веб-сервер и сервис приложений, разрабатываемый Microsoft. Поставляется в составе Windows Server (с версии NT 4.0, 1996) и Windows 10/11 Pro/Enterprise (включается через «Компоненты Windows»). Основное применение — хостинг ASP.NET-приложений, .NET Core, PHP через FastCGI, а также статических сайтов в среде Windows.
Как работает
IIS основан на модульной архитектуре: ядро http.sys (драйвер режима ядра, HTTP Stack) обрабатывает входящие HTTP-соединения на уровне ядра Windows. Это обеспечивает высокую производительность для статики и стандартных HTTP-запросов. Прикладная обработка выполняется в Application Pools — изолированных рабочих процессах w3wp.exe.
Application Pool — ключевая концепция IIS: каждый сайт или приложение работает в своём пуле с отдельной идентичностью (учётная запись, права), настройками .NET Framework и режимом рециркуляции (recycling). Падение одного приложения не затрагивает другие.
Версии IIS и соответствие Windows:
- IIS 10.0 — Windows Server 2016/2019/2022, Windows 10/11. HTTP/2, HTTPS, WebSockets, Server Name Indication (SNI).
- IIS 8.5 — Windows Server 2012 R2.
- IIS 7.5 — Windows Server 2008 R2 (конец поддержки 2020).
История
IIS 1.0 вышел в 1995 году как дополнение к Windows NT 3.51. IIS 3.0 (1996) ввёл Active Server Pages (ASP) — серверные скрипты на VBScript/JScript. В 2001 году IIS 5.1 поразил червь Code Red, использовавший уязвимость переполнения буфера — на несколько дней вывел из строя сотни тысяч серверов. IIS 6.0 (Windows Server 2003) переписан с фокусом на безопасность. IIS 7 (2006) ввёл модульную архитектуру и Application Pools. IIS 10 (2016) добавил HTTP/2.
IIS в хостинге
В российском и мировом хостинге IIS используется для Windows-хостинга — сегмента, ориентированного на ASP.NET-разработчиков. Linux-хостинг (VPS) использует nginx или Apache — не IIS. Доля Windows-хостинга в общем рынке невелика (~5-10%). Панели управления для Windows-хостинга: Plesk (поддерживает IIS), WHMCS + Plesk. Для Linux-хостинга IIS не применяется — там nginx или Apache.
IIS: конфигурация и интеграция с .NET
IIS и ASP.NET Core: начиная с .NET Core 2.0, ASP.NET приложения работают в двух режимах — In-Process (Kestrel внутри IIS worker process, быстрее) и Out-of-Process (IIS как reverse proxy перед Kestrel). Web.config содержит минимальные настройки; основная конфигурация — в appsettings.json. Модуль ASP.NET Core Module (ANCM) — ключевой компонент интеграции.
URL Rewrite Module — аналог mod_rewrite Apache для IIS: правила в web.config, поддерживает regex. Необходим для Single Page Applications (Angular, React) — redirect всех запросов на index.html. Application Pools: один App Pool на приложение — изоляция (крах одного не затрагивает другие). Identity App Pool: ApplicationPoolIdentity или конкретный пользователь Windows. IIS Crypto — инструмент для управления TLS-настройками IIS (отключить устаревшие протоколы).
На что обращать внимание
IIS управляется через GUI (IIS Manager) или PowerShell (WebAdministration модуль). Для автоматизации deployment на IIS используют Web Deploy (MSDeploy). При хостинге ASP.NET Core через IIS необходим ASP.NET Core Hosting Bundle — модуль для обратного проксирования к Kestrel (встроенный сервер ASP.NET Core). URL Rewrite Module — аналог mod_rewrite Apache и rewrite в nginx, скачивается отдельно.
Типичные проблемы
HTTP 500.19 — ошибка конфигурации web.config: неверный синтаксис XML или запрещённые директивы. HTTP 503 Service Unavailable — Application Pool остановлен (проверьте Event Viewer). Права доступа: Application Pool Identity (обычно IIS AppPool\AppPoolName) должна иметь права на директорию сайта. Для shared hosting на Windows IIS — каждый клиент получает отдельный Application Pool с ограниченными правами.