Skip to content
VDS · Windows Server

IIS: сайт на Windows

Як встановити вебсервер IIS на VPS, опублікувати перший сайт на власному домені, випустити сертифікат і не потонути в логах.

Оновлено 23 серпня 2026 р.

IIS — це вбудований вебсервер Windows Server. Він добре працює для застосунків ASP.NET, для статичного вмісту та як зворотний проксі перед сервісом, що слухає на локальному порту.

Встановлення

Install-WindowsFeature -Name Web-Server -IncludeManagementTools
Install-WindowsFeature Web-Asp-Net48, Web-Http-Redirect, Web-Dyn-Compression

Відкрийте порти у брандмауері:

New-NetFirewallRule -DisplayName "HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow

Перевірте, чи відкривається стартова сторінка за адресою вашої машини з «Огляду» в панелі /hosting/vds/m/<id>. Якщо ні, дивіться Windows Firewall.

Ваш перший сайт

Import-Module WebAdministration
New-Item -ItemType Directory C:\sites\example
Set-Content C:\sites\example\index.html "<h1>It works</h1>"

New-WebAppPool -Name "example"
New-Website -Name "example" -Port 80 -HostHeader "example.ru" `
  -PhysicalPath "C:\sites\example" -ApplicationPool "example"

Заголовок хоста (-HostHeader) дає змогу розміщувати кілька сайтів на одній адресі: IIS розрізняє їх за доменом. Домен має вказувати на адресу вашої машини через A-запис.

Сайту потрібні лише мінімальні дозволи на каталозі — читання:

icacls C:\sites\example /grant "IIS AppPool\example:(OI)(CI)R" /T

Сертифікат HTTPS

Найпростіший спосіб отримати безплатний сертифікат — клієнт win-acme: завантажте wacs.exe, запустіть його від імені адміністратора та виберіть свій сайт зі списку — він випустить сертифікат, прив'яже його до сайту та створить завдання для поновлення.

Щоб перевірити прив'язки:

Get-WebBinding -Name "example"
New-WebBinding -Name "example" -Protocol https -Port 443 -HostHeader "example.ru" -SslFlags 1

Для випуску сертифіката порт 80 має бути відкритий іззовні — через нього відбувається перевірка домену.

Застосунок за IIS

Якщо ваш сервіс (Node, Python, .NET Kestrel) слухає на 127.0.0.1:5000, встановіть модулі URL Rewrite та Application Request Routing, увімкніть проксіювання й додайте до web.config сайту таке:

<rule name="proxy" stopProcessing="true">
  <match url="(.*)" />
  <action type="Rewrite" url="http://127.0.0.1:5000/{R:1}" />
</rule>

Так назовні видно лише IIS із сертифікатом, а застосунок залишається на localhost.

Експлуатація

Get-Website | Select-Object Name, State, PhysicalPath
Restart-WebAppPool example
Get-WebAppPoolState

Логи лежать у C:\inetpub\logs\LogFiles і ростуть без обмежень — на диску обсягом 40 ГБ це швидко накопичується. Налаштуйте ротацію в IIS Manager (розділ «Logging», щоденні файли) та видаляйте старі логи за допомогою запланованого завдання:

Get-ChildItem C:\inetpub\logs\LogFiles -Recurse -File |
  Where-Object LastWriteTime -lt (Get-Date).AddDays(-30) | Remove-Item -Force

Типові помилки

  • Помилка 500.19 — пошкоджений web.config або відсутній модуль. Точну причину видно в тексті помилки, якщо увімкнути докладні повідомлення для локальних запитів.
  • Пул застосунків зупиняється сам. Спрацював захист від швидких збоїв: сайт падає, і IIS його вимикає. Шукайте причину в журналі застосунків (Get-WinEvent -LogName Application -MaxEvents 30).
  • Сайт відкривається за адресою, але не за доменом. Заголовок хоста не збігається або DNS ще не оновився.
  • 403 після публікації. Пулу застосунків не надали дозволи на каталог.

Тримайте каталоги сайтів поза C:\inetpub і в окремій теці, наприклад C:\sites — так простіше робити резервні копії та можна перевстановити систему без втрати даних.