Веб-сервер IIS
Веб-сервер IIS (Internet Information Services, ранее — Internet Information Server) — это проприетарный веб-сервер, разработанный корпорацией Microsoft для операционных систем семейства Windows. Он предназначен для обслуживания HTTP-запросов, публикации веб-сайтов, веб-приложений и служб, а также для обеспечения работы протоколов FTP, SMTP, NNTP и WebSocket. IIS является одним из наиболее распространённых веб-серверов в мире, наряду с Apache HTTP Server и Nginx, и широко используется в корпоративных средах благодаря тесной интеграции с экосистемой Microsoft (Active Directory, ASP.NET, SQL Server, .NET Framework).
История
Первая версия IIS (1.0) была выпущена в 1996 году как компонент Windows NT 4.0. Она представляла собой дополнение к операционной системе и обеспечивала базовые функции веб-сервера.
- IIS 2.0 (1996) — включал поддержку технологии Active Server Pages (ASP) и улучшенное управление через консоль.
- IIS 3.0 (1997) — добавил поддержку ASP версии 2.0 и компонентные объекты COM.
- IIS 4.0 (1998) — стал отдельным продуктом, поставляемым с Windows NT 4.0 Option Pack. Внедрена архитектура на основе изолированных процессов и новый интерфейс управления — Internet Service Manager.
- IIS 5.0 (2000) — поставлялся с Windows 2000. Включал улучшенную производительность, поддержку SSL 3.0, WebDAV и технологию Application Protection.
- IIS 5.1 (2001) — версия для Windows XP Professional, с ограниченной функциональностью (ограничение на 10 одновременных подключений).
- IIS 6.0 (2003) — выпущен с Windows Server 2003. Полностью переработанная архитектура с новым процессом работы (wwwsvc.exe), основанным на пулах приложений (application pools). IIS 6.0 значительно повысил стабильность, безопасность и производительность.
- IIS 7.0 (2008) — поставлялся с Windows Server 2008 и Windows Vista. Внедрена модульная архитектура, позволяющая включать только необходимые компоненты. Появился новый интерфейс управления — диспетчер IIS (IIS Manager), а также поддержка конфигурации через XML-файлы (Web.config).
- IIS 7.5 (2009) — версия для Windows Server 2008 R2 и Windows 7. Добавлена поддержка .NET Framework 4.0, улучшена интеграция с PowerShell и поддержка FastCGI.
- IIS 8.0 (2012) — поставлялся с Windows Server 2012 и Windows 8. Введена поддержка SNI (Server Name Indication), WebSockets и FTP на основе TLS.
- IIS 8.5 (2013) — версия для Windows Server 2012 R2 и Windows 8.1. Добавлено журналирование на уровне запроса, динамическое сжатие, улучшена работа с виртуальными каталогами.
- IIS 10.0 (2015) — выпущен с Windows Server 2016 и Windows 10. Включает поддержку HTTP/2, нового механизма управления конфигурациями (IIS Administration), улучшенную интеграцию с контейнерами и Nano Server. Сохраняется в актуальных версиях Windows Server 2022 и Windows 11.
Архитектура
Основные компоненты
IIS построен на модульной архитектуре, где каждый функциональный компонент представлен отдельным модулем. Набор базовых модулей включает:
- HTTP-ядро (HTTP.sys) — драйвер режима ядра, отвечающий за прием HTTP-запросов, управление очередями и передачу данных в пулы приложений.
- Служба управления (Windows Process Activation Service, WAS) — управляет жизненным циклом пулов приложений, настройками конфигурации и активацией рабочих процессов.
- Модули режима пользователя:
- Модуль статического содержимого (StaticFileModule)
- Модуль каталогов (DirectoryListingModule)
- Модуль аутентификации (AnonymousAuthenticationModule, WindowsAuthenticationModule, BasicAuthenticationModule и др.)
- Модуль сжатия (DynamicCompressionModule, StaticCompressionModule)
- Модуль переопределения URL (URL Rewrite Module)
- Модуль CGI (CgiModule)
- Модуль FastCGI (FastCgiModule)
- Модуль для ASP.NET (AspNetModule, IsapiModule)
Пул приложений
Важнейшая концепция IIS — пул приложений (application pool). Это изолированная среда выполнения, в которой работает одно или несколько веб-приложений. Каждый пул приложений имеет собственный рабочий процесс (w3wp.exe). Изоляция пулов предотвращает влияние сбоев одного приложения на другие и позволяет независимо настраивать параметры: версию .NET CLR, режим конвейера (классический или интеграционный), учетные данные и политику перезапуска.
Режимы конвейера обработки запросов
IIS поддерживает два режима обработки запросов:
- Классический режим (Classic Mode) — для совместимости с приложениями, написанными под IIS 6.0. Обработка запросов проходит через два этапа: сначала код ISAPI, затем ASP.NET.
- Интеграционный режим (Integrated Mode) — единый конвейер объединяет обработку запросов от IIS и ASP.NET. Это позволяет использовать модули ASP.NET для всех типов запросов, не ограничиваясь только страницами .aspx.
Классификация версий
Поставляемые версии IIS можно разделить по целевым платформам:
| Версия | ОС | Ключевые особенности |
|---|---|---|
| 5.0 | Windows 2000 | Первая стабильная версия с поддержкой WebDAV |
| 6.0 | Windows Server 2003 | Архитектура с пулами приложений, улучшенная безопасность |
| 7.0 | Windows Server 2008 / Vista | Модульная архитектура, Web.config, IIS Manager |
| 7.5 | Windows Server 2008 R2 / 7 | Поддержка PowerShell, FastCGI, .NET 4.0 |
| 8.0 | Windows Server 2012 / 8 | SNI, WebSockets, FTP over TLS |
| 8.5 | Windows Server 2012 R2 / 8.1 | Журналирование на уровне запроса, динамическое сжатие |
| 10.0 | Windows Server 2016/2019/2022 / 10/11 | HTTP/2, контейнеры, Nano Server, улучшенное управление |
Применение
Веб-хостинг
IIS широко используется в корпоративных средах для хостинга веб-сайтов и веб-приложений, созданных с использованием технологий Microsoft: ASP.NET, ASP, C#, VB.NET, а также MVC, Web API и SignalR.
Платформа для разработки
Разработчики используют IIS как среду для локального тестирования и отладки веб-приложений. Встроенная поддержка Visual Studio позволяет публиковать проекты напрямую в IIS.
Роль в Microsoft Azure
Облачная платформа Microsoft Azure использует IIS как часть службы App Service (ранее — Azure Websites). Внутри виртуальных машин и инфраструктуры Azure работает адаптированная версия IIS для исполнения пользовательских веб-приложений.
Примеры
- Корпоративные порталы — SharePoint, Dynamics CRM, Exchange Web Services.
- Интернет-магазины — на платформе ASP.NET (например, nopCommerce).
- Административные панели — системы управления контентом (CMS) на .NET: Umbraco, Sitefinity, Orchard.
- Веб-сервисы — REST API, SOAP-сервисы, WebHooks.
Конфигурирование
IIS поддерживает несколько способов настройки:
- Графический интерфейс (IIS Manager) — оснастка MMC с древовидной структурой, позволяющая добавлять сайты, пулы приложений, настраивать модули, параметры безопасности, SSL-сертификаты и протоколы.
- Командная строка (appcmd.exe) — утилита для управления IIS из командной строки или скриптов.
- Windows PowerShell (IISAdministration) — модуль для автоматизации задач через объектную модель.
- XML-файлы (Web.config) — иерархическая система конфигурации на уровне приложений, каталогов и файлов. Параметры могут храниться в корневом файле applicationHost.config.
Безопасность
IIS включает встроенные механизмы аутентификации и авторизации:
- Анонимная аутентификация — используется по умолчанию для публичных сайтов.
- Базовая аутентификация — передача имени и пароля в открытом виде через HTTP.
- Аутентификация Windows — на основе протоколов NTLM или Kerberos, обычно применяется в интрасетях.
- Аутентификация по сертификатам — проверка SSL-сертификатов клиентов.
- Forms-аутентификация — на основе билетов, управляемая через модуль ASP.NET.
- Двухфакторная аутентификация — через расширения сторонних производителей или интеграцию с Active Directory.
Также IIS поддерживает ограничение доступа по IP-адресам, использование SSL/TLS (вплоть до TLS 1.3), фильтрацию запросов (Request Filtering) и защиту от распространённых атак (SQL-инъекции, межсайтовый скриптинг).
Производительность
IIS обеспечивает высокую производительность благодаря следующим механизмам:
- Кэширование — статических файлов, динамических ответов и результирующего HTML.
- Сжатие — статическое (gzip, deflate) и динамическое.
- Балансировка нагрузки — встроенная поддержка через Network Load Balancing или внешние устройства.
- Поддержка HTTP/2 и HTTP/3 — мультиплексирование, сжатие заголовков, серверный пушинг.
- Оптимизация потоков — управление очередями запросов, ограничение числа одновременных подключений.
Сравнение с другими веб-серверами
| Характеристика | IIS | Apache | Nginx |
|---|---|---|---|
| Операционная система | Windows | Linux, Windows, macOS | Linux, Windows, macOS |
| Архитектура | Модульная, с пулами приложений | Модульная, процессная | Событийная, асинхронная |
| Языки по умолчанию | ASP.NET, ASP, C#, VB.NET, PHP (через FastCGI) | PHP, Perl, Python, Ruby, Java | PHP, Python, Ruby, Node.js |
| Лицензия | Проприетарная (поставляется с Windows) | Apache 2.0 (свободная) | 2-х пунктная лицензия BSD |
| Интерфейс управления | GUI (IIS Manager), командная строка, PowerShell | .htaccess, файлы конфигурации, GUI (cPanel, Webmin) | Файлы конфигурации, GUI (в сторонних панелях) |
| Поддержка .NET | Полная (встроенный модуль) | Через mod_mono | Через .NET Core (не встроено) |
| Популярность среди сайтов | ~10–15% | ~30–35% | ~35–40% |
Интересные факты
- IIS был первым веб-сервером, поддерживавшим технологию Active Server Pages (ASP), что дало толчок развитию динамических веб-сайтов на платформе Windows.
- В версии 6.0 была введена концепция «режима изоляции приложений», которая стала основой современной модульной архитектуры.
- IIS поддерживает не только HTTP/HTTPS, но и протоколы FTP, FTPS, SMTP, NNTP (почтовые и новостные протоколы), а также WebSocket.
- Начиная с IIS 7.0, конфигурация осуществляется через XML-файлы, что позволяет использовать системы управления версиями (Git, TFS) для отслеживания изменений.
- В Microsoft Azure App Service используется упрощённая версия IIS, адаптированная для облачной инфраструктуры.
Критика
Несмотря на широкое распространение, IIS подвергается критике по нескольким аспектам:
- Привязка к Windows — сервер работает только в среде Microsoft Windows, что ограничивает выбор ОС для хостинга.
- Сложность конфигурации — для новичков интерфейс IIS Manager может показаться перегруженным, а управление через файлы Web.config менее интуитивно, чем у Apache.
- Ресурсоёмкость — IIS потребляет больше оперативной памяти по сравнению с лёгкими конкурентами (Nginx, Lighttpd) при обслуживании большого числа статических файлов.
- История уязвимостей — в ранних версиях (особенно IIS 4.0 и 5.0) было обнаружено множество критических уязвимостей (например, Code Red, Nimda), которые повлияли на репутацию продукта.
Источники
- Microsoft Docs: Internet Information Services (IIS)
- История версий IIS – официальная документация Microsoft
- Сравнение веб-серверов: Netcraft Web Server Survey
- Документация: HTTP.sys driver – Microsoft
- IIS Architecture: Application Pools and Worker Processes – Microsoft TechNet
- Безопасность IIS: обзор аутентификации и авторизации – Microsoft Learn
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →