IIS: situs di Windows
Cara memasang web server IIS di VPS, menerbitkan situs pertama Anda di domain sendiri, menerbitkan sertifikat, dan menghindari tenggelam dalam log.
Diperbarui 23 Agustus 2026
IIS adalah web server bawaan Windows Server. IIS bekerja dengan baik untuk aplikasi ASP.NET, untuk konten statis, dan sebagai reverse proxy di depan layanan yang mendengarkan pada port lokal.
Instalasi
Install-WindowsFeature -Name Web-Server -IncludeManagementTools
Install-WindowsFeature Web-Asp-Net48, Web-Http-Redirect, Web-Dyn-Compression
Buka port di firewall:
New-NetFirewallRule -DisplayName "HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
Periksa bahwa halaman awal terbuka di alamat mesin Anda dari "Overview" di panel /hosting/vds/m/<id>. Jika tidak, lihat Windows Firewall.
Situs pertama Anda
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"
Host header (-HostHeader) memungkinkan Anda menghosting beberapa situs pada satu alamat: IIS membedakannya berdasarkan domain. Domain harus mengarah ke alamat mesin Anda dengan record A.
Situs hanya memerlukan izin minimal pada direktori — read:
icacls C:\sites\example /grant "IIS AppPool\example:(OI)(CI)R" /T
Sertifikat HTTPS
Cara termudah untuk mendapatkan sertifikat gratis adalah klien win-acme: unduh wacs.exe, jalankan sebagai administrator, dan pilih situs Anda dari daftar — klien akan menerbitkan sertifikat, mengikatnya ke situs, dan membuat tugas pembaruan.
Untuk memeriksa binding:
Get-WebBinding -Name "example"
New-WebBinding -Name "example" -Protocol https -Port 443 -HostHeader "example.ru" -SslFlags 1
Untuk menerbitkan sertifikat, port 80 harus terbuka dari luar — validasi domain melalui port tersebut.
Aplikasi di belakang IIS
Jika layanan Anda (Node, Python, .NET Kestrel) mendengarkan pada 127.0.0.1:5000, pasang modul URL Rewrite dan Application Request Routing, aktifkan proxying, dan tambahkan berikut ini ke web.config situs:
<rule name="proxy" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://127.0.0.1:5000/{R:1}" />
</rule>
Dengan begitu hanya IIS dengan sertifikat yang terekspos ke luar, dan aplikasi tetap di localhost.
Operasional
Get-Website | Select-Object Name, State, PhysicalPath
Restart-WebAppPool example
Get-WebAppPoolState
Log tersimpan di C:\inetpub\logs\LogFiles dan bertambah tanpa batas — pada disk 40 GB, ukurannya cepat membengkak. Atur rotasi di IIS Manager (bagian "Logging", file harian) dan hapus log lama dengan scheduled task:
Get-ChildItem C:\inetpub\logs\LogFiles -Recurse -File |
Where-Object LastWriteTime -lt (Get-Date).AddDays(-30) | Remove-Item -Force
Error umum
- Error 500.19 —
web.configrusak atau modul tidak ada. Penyebab pastinya terlihat pada teks error jika Anda mengaktifkan pesan detail untuk permintaan lokal. - Application pool berhenti sendiri. Perlindungan rapid-fail aktif: situs crash dan IIS mematikannya. Cari penyebabnya di application log (
Get-WinEvent -LogName Application -MaxEvents 30). - Situs terbuka lewat alamat tetapi tidak lewat domain. Host header tidak cocok, atau DNS belum diperbarui.
- 403 setelah publishing. Application pool tidak diberi izin pada direktori.
Jauhkan direktori situs Anda dari
C:\inetpubdan letakkan di folder terpisah sepertiC:\sites— itu memudahkan backup dan memungkinkan Anda menginstal ulang sistem tanpa kehilangan data.