# IIS 建站与绑定 ## 场景 Windows 服务器上要挂一个内部站点,或者给某个应用做反向代理。 ## 前置条件 - 服务器有固定 IP - 防火墙放行 80/443 - 站点文件放好,知道应用程序池要用的账号 ## 配置 ```powershell # 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 ``` ## 验证 ```powershell 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 ``` ## 回滚 ```powershell 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`,别在系统盘写满前才发现。