1. Общее описание
Internet Information Services (IIS) — это гибкий и мощный веб-сервер, предоставляемый Microsoft, предназначенный для разработки, тестирования и развертывания веб-приложений на платформе Windows. IIS поддерживает различные протоколы, такие как HTTP, HTTPS, FTP, SMTP, NNTP и другие, что делает его универсальным решением для хостинга веб-контента.
2. Основные компоненты IIS
2.1. Веб-сервер (HTTP)
- Предоставляет возможность обслуживания статического и динамического контента.
- Поддерживает ASP.NET, PHP, CGI, ISAPI и другие технологии.
2.2. Менеджер служб IIS (IIS Manager)
- Графический интерфейс управления сервером.
- Позволяет управлять сайтами, приложениями, пулами приложений, модулями, сертификатами и т.д.
2.3. Пулы приложений (Application Pools)
- Контейнеры для одного или нескольких веб-приложений.
- Используются для изоляции приложений друг от друга с точки зрения ресурсов и безопасности.
- Можно настраивать параметры времени жизни, перезапуска, ограничений памяти и CPU.
2.4. Сайты и приложения
- Сайт — логическая единица, связанная с определенным доменом или IP-адресом/портом.
- Приложение — часть сайта, имеющая собственную конфигурацию и пулы приложений.
2.5. Диспетчер перезапуска приложений (AppInit)
- Позволяет выполнять предварительную загрузку приложений перед их первым запросом.
- Уменьшает время ответа на первый запрос.
3. Архитектура IIS
3.1. Ядро IIS (HTTP.SYS)
- Является драйвером ядра Windows.
- Принимает входящие HTTP-запросы, кэширует статический контент, фильтрует трафик.
3.2. Рабочий процесс (W3WP.exe)
- Выполняет обработку динамических запросов.
- Запускается для каждого пула приложений.
3.3. Модули IIS
- Расширяемая архитектура позволяет добавлять функциональность через встроенные и пользовательские модули.
- Примеры: URL Rewrite, Dynamic Content Compression, Authentication Modules, ARR (Application Request Routing).
4. Поддерживаемые технологии
Технология |
Поддержка |
ASP.NET |
Полная поддержка (Core, Framework) |
PHP |
Поддерживается через FastCGI |
Python |
Поддерживается через WSGI и FastCGI |
Node.js |
Поддерживается через iisnode (плагин) |
CGI / FastCGI |
Да |
WebSocket |
Да |
WebDAV |
Да |
REST / SOAP |
Да |
5. Безопасность в IIS
5.1. Аутентификация
- Анонимная
- Windows Authentication (NTLM, Kerberos)
- Basic Authentication
- Digest Authentication
- Forms Authentication (через ASP.NET)
- OAuth / JWT (через модули или middleware)
5.2. Шифрование
- Поддержка SSL/TLS через HTTPS.
- Настройка сертификатов через IIS Manager.
- Поддержка SNI (Server Name Indication).
5.3. Ограничение доступа
- IP-ограничения
- Ограничения по имени хоста
- URL Authorization
- Request Filtering (фильтрация методов, заголовков, строк запроса)
6. Управление и мониторинг
6.1. Инструменты управления
- IIS Manager (inetmgr.msc)
- PowerShell (IISAdministration, WebAdministration)
- AppCmd.exe
- Configuration Editor
6.2. Логирование
- W3C-логи (по умолчанию).
- Поддержка центрального логирования (Centralized Logging).
- Экспорт логов в файлы, базы данных, внешние системы.
6.3. Производительность
- Динамическое и статическое сжатие.
- Кэширование вывода.
- Поддержка Output Caching Module.
- Load balancing через ARR + Application Request Routing.
7. Развертывание и интеграция
7.1. Web Deploy (MSDeploy)
- Инструмент для синхронизации, резервного копирования и развертывания сайтов.
- Поддерживает автоматизацию и CI/CD.
7.2. Azure Integration
- Поддержка облачных веб-приложений Azure App Service.
- Возможность развертывания в Azure через ARM-шаблоны, DevOps.
7.3. Docker
- IIS может быть запущен внутри контейнера Windows.
- Подходит для микросервисной архитектуры.
8. Версии IIS
Версия Windows |
Версия IIS |
Особенности |
Windows XP / Server 2003 |
IIS 5.1 / 6.0 |
Базовая функциональность |
Windows Vista / Server 2008 |
IIS 7.0 |
Новый модульный дизайн |
Windows 7 / Server 2008 R2 |
IIS 7.5 |
Улучшения в управлении |
Windows 8 / Server 2012 |
IIS 8.0 |
Поддержка множественных IP, SNI |
Windows 8.1 / Server 2012 R2 |
IIS 8.5 |
Поддержка Dynamic Hostable Web Core |
Windows 10 / Server 2016–2022 |
IIS 10.0 |
Поддержка HTTP/2, улучшенная интеграция с .NET Core, контейнеры |
9. Конфигурационные файлы
9.1. applicationHost.config
- Главный файл конфигурации IIS.
- Расположен в
%windir%\system32\inetsrv\config\applicationHost.config
.
9.2. web.config
- Файл конфигурации на уровне сайта или приложения.
- Может содержать настройки аутентификации, авторизации, обработчиков, модулей, подключений к БД и т.д.
10. Полезные ссылки
11. Примеры команд PowerShell
# Установка IIS
Install-WindowsFeature -Name Web-Server -IncludeManagementTools
# Перезапуск сайта
Restart-IISSite -Name "Default Web Site"
# Получение списка пулов приложений
Get-IISAppPool
# Остановка пула приложений
Stop-IISAppPool -Name "MyAppPool"
# Создание нового сайта
New-IISSite -Name "MySite" -Port 8080 -HostHeader mysite.local -PhysicalPath "C:\inetpub\mysite"
12. Рекомендации по производительности
- Использовать статическое и динамическое сжатие.
- Настроить кэширование вывода (
<caching>
в web.config).
- Избегать частых перезапусков пулов приложений.
- Использовать Application Initialization для "прогрева" приложений.
- Отслеживать использование ресурсов через Performance Monitor.
13. Рекомендации по безопасности
- Отключать ненужные модули и протоколы.
- Использовать HTTPS с современными шифрами.
- Регулярно обновлять Windows и IIS.
- Настроить строгие политики доступа и аутентификации.
- Использовать Web Application Firewall (например, Azure WAF или ModSecurity).