Oamc

IIS 建站与绑定

本页目录

场景

Windows 服务器上要挂一个内部站点,或者给某个应用做反向代理。

前置条件

  • 服务器有固定 IP
  • 防火墙放行 80/443
  • 站点文件放好,知道应用程序池要用的账号

配置

# 1. 安装
Install-WindowsFeature -Name Web-Server, Web-Asp-Net45, Web-Mgmt-Console -IncludeManagementTools

# 2. 建目录和站点
New-Item -ItemType Directory -Path C:\sites\kb -Force
New-WebAppPool -Name "kb-pool"
Set-ItemProperty IIS:\AppPools\kb-pool -Name managedRuntimeVersion -Value ""
New-Website -Name "kb" -PhysicalPath C:\sites\kb -Port 80 `
  -HostHeader kb.corp.local -ApplicationPool "kb-pool"

# 3. 防火墙
New-NetFirewallRule -DisplayName "HTTP-80" -Direction Inbound -Protocol TCP `
  -LocalPort 80 -Action Allow

验证

Get-Website
Get-WebBinding -Name "kb"
Invoke-WebRequest http://kb.corp.local -UseBasicParsing | Select-Object StatusCode
Get-ChildItem C:\inetpub\logs\LogFiles\W3SVC1\ | Sort-Object LastWriteTime -Descending | Select-Object -First 3

回滚

Remove-Website -Name "kb"
Remove-WebAppPool -Name "kb-pool"

坑

  • 应用程序池账号没有目录读权限,站点起不来只报 401.3 或 500.19。
  • 绑定里填了主机名,用 IP 访问就会 404,需要再加一条绑定或改用 IP。
  • 80 端口被别的站点占着,New-Website 会提示端口冲突。
  • 默认文档没配,访问目录会 403。
  • 32 位应用要在应用程序池里开 Enable 32-Bit Applications。
  • 日志在 C:\inetpub\logs,别在系统盘写满前才发现。