· 15 мин чтения

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

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

Привет! Меня зовут Семёнов Евгений Сергеевич, и я директор ITFresh. Вы, наверное, слышали про IIS? Часто про него говорят: «Да это прошлый век!» или «Кому он вообще сейчас нужен?». Знаете, на самом деле, этот продукт от Microsoft — фундамент для кучи корпоративных веб-приложений. На нём прекрасно работает что угодно: от веб-клиента 1С до Outlook Web Access, SharePoint, различных ASP.NET порталов, ADFS и даже Certificate Authority Web Enrollment. Пятнадцать лет я в IT, и за это время чего только не делал! Десятки IIS-ферм, от совсем скромных до по-настоящему гигантских, прошли через мои руки. В этой статье я хочу поделиться своими наработками. Покажу вам, как шаг за шагом развернуть IIS на Windows Server 2022, опубликовать на нём сайт, грамотно настроить SSL и эффективно использовать ARR как reverse proxy.

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

Установить роль Web Server (IIS) можно по-разному. Через Server Manager, если вы любите кликать мышкой. А можно и через 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 дней до истечения, win-acme сама его обновит. Удобно, правда?

URL Rewrite: HTTP → HTTPS и reverse proxy

Модуль URL Rewrite — это вообще маст-хэв, если вы всерьёз работаете с 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, или ARR — это уже следующая ступень. По сути, это надстройка над URL Rewrite, которая превращает ваш IIS в мощный, полноценный reverse proxy, да ещё и с балансировкой нагрузки! Мы в ITFresh на своей практике не раз убеждались: 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, это были виртуальные машины под Hyper-V на мощных Dell Xeon Platinum 8280. Для надёжности и балансировки поставили перед ними связку HAProxy + Keepalived. На всех этих машинах работал один-единственный сайт — portal.corp.ru. И вот здесь-то нам пригодились URL Rewrite и ARR, которые умело направляли трафик по разным путям:

Конечно, не забыли про безопасность: сертификат Let's Encrypt настроили на автообновление через win-acme. А ещё прописали все нужные HTTP-заголовки: HSTS, X-Frame-Options и Content Security Policy (CSP). Итог? За четыре месяца бесперебойной работы портала — ни одного падения! Система мониторинга Icinga показала впечатляющие 99.98% аптайма. Мы довольны, клиент счастлив!

А сколько это стоило? Весь проект, включая настройку и внедрение, обошёлся в 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 подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.