IIS:在 Windows 上搭建站点
如何在 VPS 上安装 IIS Web 服务器,用自己的域名发布第一个站点,签发证书,并避免被日志淹没。
更新于 2026年8月23日
IIS 是 Windows Server 内置的 Web 服务器。它非常适合运行 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 防火墙。
您的第一个站点
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 GB 的磁盘上很快就会占满。请在 IIS 管理器中设置轮转(“日志”部分,按天生成文件),并通过计划任务删除旧日志:
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这样的单独文件夹中——这样备份更容易,重装系统时也不会丢失数据。