· 15 мин чтения

IIS: развёртывание веб-сервера на Windows Server для корпоративных приложений

Семёнов Евгений Сергеевич, директор АйТи Фреш. IIS — один из тех продуктов Microsoft, про который все говорят «устарел» и «нафиг он нужен», но который продолжает держать огромное количество корпоративных веб-приложений. 1С веб-клиент, OWA, SharePoint, внутренние ASP.NET порталы, ADFS, Certificate Authority Web Enrollment — всё это живёт на IIS. За 15 лет я настроил десятки IIS-ферм от маленьких до больших. В статье покажу, как развернуть IIS на Windows Server 2022, опубликовать сайт, настроить SSL и использовать ARR как reverse proxy.

Установка роли Web Server

Роль Web Server (IIS) ставится через Server Manager или PowerShell. Я всегда через PowerShell — повторяемость и скорость.

# Полный набор для корпоративного портала с ASP.NET
Install-WindowsFeature -Name Web-Server,Web-WebServer,Web-Common-Http, `
  Web-Default-Doc,Web-Dir-Browsing,Web-Http-Errors,Web-Static-Content, `
  Web-Http-Redirect,Web-Health,Web-Http-Logging,Web-Custom-Logging, `
  Web-Log-Libraries,Web-Request-Monitor,Web-Http-Tracing,Web-Performance, `
  Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering, `
  Web-Basic-Auth,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45, `
  Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Mgmt-Tools,Web-Mgmt-Console, `
  Web-Scripting-Tools -IncludeManagementTools -Restart

После установки на порту 80 отвечает дефолтная страница IIS. Открываем inetmgr — получаем знакомую консоль управления.

Структура сайта в IIS

IIS оперирует тремя понятиями: Site, Application, Virtual Directory. Я всегда объясняю разницу следующим образом:

Пример: сайт portal.corp.ru с двумя приложениями — /api (ASP.NET Core 8) и /reports (классический ASP.NET Framework 4.8), каждое в своём пуле.

Создание сайта через PowerShell

Import-Module WebAdministration

# Каталог с сайтом
New-Item -Path "D:\Sites\Portal" -ItemType Directory -Force

# Application Pool
New-WebAppPool -Name "PortalPool" -Force
Set-ItemProperty IIS:\AppPools\PortalPool `
  -Name managedRuntimeVersion -Value "v4.0"
Set-ItemProperty IIS:\AppPools\PortalPool `
  -Name processModel.identityType -Value ApplicationPoolIdentity
Set-ItemProperty IIS:\AppPools\PortalPool `
  -Name recycling.periodicRestart.time -Value "00:00:00"

# Site с двумя binding — HTTP и HTTPS
New-Website -Name "Portal" -PhysicalPath "D:\Sites\Portal" `
  -ApplicationPool "PortalPool" `
  -HostHeader "portal.corp.ru" -Port 80

# Доступ пула к каталогу
icacls "D:\Sites\Portal" /grant "IIS AppPool\PortalPool:(OI)(CI)RX" /T

Application Pool: настройки, которые важны

Большинство админов оставляют пул на дефолтах — и это ошибка. Правильная настройка пула решает 80% проблем с производительностью и памятью.

ПараметрРекомендацияЗачем
Pipeline modeIntegratedСовременный ASP.NET
IdentityApplicationPoolIdentityИзоляция, минимум прав
Idle Time-out0 для productionЧтобы пул не выгружался, не грузил первый запрос
Regular Time Interval0 или ночьюНе рестартовать на пользователях
Private Memory Limit70% от RAM сервераАвтоперезапуск при утечке
Queue Length2000-5000Держать пики без 503

SSL-сертификат: Let's Encrypt через win-acme

Для внутренних сервисов — сертификат от AD CS через шаблон Web Server. Для внешних — Let's Encrypt через win-acme, я много лет пользуюсь этой утилитой, она стабильна.

# Скачиваем win-acme
Invoke-WebRequest `
  -Uri "https://github.com/win-acme/win-acme/releases/download/v2.2.9.1701/win-acme.v2.2.9.1701.x64.pluggable.zip" `
  -OutFile "C:\Install\wacs.zip"
Expand-Archive "C:\Install\wacs.zip" -DestinationPath "C:\wacs"

# Запускаем интерактивно
cd C:\wacs
.\wacs.exe

# Выбираем: N - Create new certificate
# 1 - Read sites from IIS, выбираем Portal
# Email admin@corp.ru, accept ToS
# Certificate installed, auto-renewal set up

Win-acme создаёт задачу в Task Scheduler, каждые 9 дней проверяет сертификаты и продлевает те, что заканчиваются через 30 дней.

URL Rewrite: HTTP → HTTPS и reverse proxy

Модуль URL Rewrite — must-have для любого IIS. Ставим отдельно, скачиваем с Microsoft Download Center.

<!-- web.config фрагмент: HTTPS редирект -->
<configuration>
  <system.webServer>
    <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>
    <httpProtocol>
      <customHeaders>
        <add name="Strict-Transport-Security"
             value="max-age=31536000; includeSubDomains" />
        <add name="X-Frame-Options" value="SAMEORIGIN" />
        <add name="X-Content-Type-Options" value="nosniff" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

ARR: reverse proxy и балансировщик

Application Request Routing — надстройка над URL Rewrite, превращающая IIS в полноценный reverse proxy с балансировкой. У нас на практике ARR отлично работает перед несколькими backend-нодами ASP.NET Core и перед 1С-серверами.

# Установка ARR
# Качаем с Microsoft — ARRv3_0.exe, ставим
# В IIS Manager появляется Application Request Routing Cache

# Включаем proxy на уровне сервера
# IIS Manager → server node → Application Request Routing Cache →
#   Server Proxy Settings → Enable proxy = true

<!-- Правило прокси в web.config -->
<rule name="ReverseProxyToBackend" stopProcessing="true">
  <match url="^api/(.*)" />
  <action type="Rewrite" url="http://backend-cluster:5000/{R:1}"
          logRewrittenUrl="true" />
  <serverVariables>
    <set name="HTTP_X_FORWARDED_PROTO" value="https" />
  </serverVariables>
</rule>

Публикация 1С веб-клиента на IIS

1С публикация через webinst.exe — штатный инструмент платформы. Я всегда делаю отдельный сайт под 1С на отдельном порту или поддомене.

cd "C:\Program Files\1cv8\8.3.23.2022\bin"
.\webinst.exe -publish -iis -wsdir ent -dir "C:\inetpub\wwwroot\ent" `
  -connstr "Srvr=""1c-srv01"";Ref=""Enterprise"";" -confpath "C:\inetpub\wwwroot\ent\default.vrd"

# После публикации в IIS появляется приложение /ent
# Проверяем: https://portal.corp.ru/ent/
# Вводим учётку 1С — должны увидеть интерфейс базы

Кейс: портал для производственного предприятия

В январе 2026 клиент — производство пищевой упаковки, 180 человек. Задача: объединить в одном веб-портале 1С УПП веб-клиент, Битрикс24-самописный модуль на ASP.NET, SharePoint-документы, Outlook Web Access. Плюс резервный сервер на случай падения основного.

Развернули два IIS 10 на Windows Server 2022 VM (Hyper-V, Dell Xeon Platinum 8280), перед ними HAProxy + Keepalived. Один сайт portal.corp.ru с URL Rewrite и ARR, направляющим пути:

Сертификат Let's Encrypt автообновление через win-acme. HSTS, X-Frame-Options и CSP прописаны. За 4 месяца работы — ни одного падения портала, 99.98% uptime по Icinga.

Стоимость проекта 220 000 руб за 7 рабочих дней.

Мониторинг и логирование

IIS пишет access-логи в C:\inetpub\logs\LogFiles в W3C-формате. Я всегда меняю формат на UTF-8, добавляю поле времени выполнения и отправляю в Elasticsearch через Filebeat.

# В IIS Manager → Site → Logging:
# Format = W3C
# Fields: +Time-Taken, +Server-IP, +Bytes-Received, +Cookie, +Host

# Или PowerShell
Set-ItemProperty "IIS:\Sites\Portal" `
  -Name logFile.logFormat -Value "W3C"
Set-ItemProperty "IIS:\Sites\Portal" `
  -Name logFile.logExtFileFlags -Value "Date,Time,ClientIP,UserName, `
  SiteName,ComputerName,ServerIP,Method,UriStem,UriQuery,HttpStatus, `
  Win32Status,TimeTaken,ServerPort,UserAgent,Referer,Host,BytesSent, `
  BytesReceived"

Настроим IIS и корпоративный веб-портал

Разворачиваем IIS для 1С веб-клиента, Битрикс24, SharePoint, ASP.NET приложений. SSL, балансировка ARR, мониторинг, HA-кластер на Windows Server. От 3 рабочих дней.

Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш

FAQ — частые вопросы по IIS

Где применяется IIS в корпоративном окружении?
IIS — основной хост для ASP.NET приложений, 1С веб-клиента, SharePoint, Outlook Web Access, Remote Desktop Web Access, CA Web Enrollment и внутренних порталов на .NET Core.
Что такое Application Pool?
Изолированный процесс w3wp.exe, в котором работает один или несколько сайтов. Падение пула не затрагивает другие пулы. Имеет свою учётку, лимиты памяти, режим переработки.
IIS или Nginx — что выбрать?
На Windows-серверах для .NET приложений — IIS, он родной. Nginx удобнее для reverse proxy перед несколькими backend, для статики и Linux-стека. Иногда они работают в паре — Nginx впереди, IIS сзади.
Как установить SSL-сертификат Let's Encrypt?
Используйте win-acme (wacs.exe) — утилита автоматически получает сертификат, устанавливает в IIS и настраивает автопродление через Task Scheduler.
Нужен ли IIS для 1С веб-клиента?
Да, 1С публикация на веб работает через модуль wsisapi.dll в IIS или Apache. IIS на Windows предпочтительнее — лучше интегрируется со службой 1С:Предприятия и логированием Windows.

Подпишитесь на рассылку ITfresh

Раз в неделю — практические гайды для руководителя IT и сисадмина: безопасность, 1С, миграции, резервные копии, лайфхаки из реальных проектов.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.