Skip to content
VDS · Windows Server

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 这样的单独文件夹中——这样备份更容易,重装系统时也不会丢失数据。