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— так простіше робити резервні копії та можна перевстановити систему без втрати даних.