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,别在系统盘写满前才发现。