在Windows服务器上成功部署IIS(Internet Information Services),核心在于规范安装流程、精准角色配置、安全加固与基础站点发布四步闭环,以下为经过生产环境验证的标准化操作指南,确保高效、稳定、可维护。
安装前准备:环境确认与权限核查
-
操作系统要求
- Windows Server 2016/2019/2026(推荐2026版,支持TLS 1.3与现代加密套件)
- 必须为64位系统,32位环境已不再支持最新IIS组件
-
管理员权限验证
- 当前登录用户需属于本地管理员组,避免UAC拦截
- 关闭第三方防火墙(如360、火绒),仅保留Windows Defender防火墙规则
-
网络与端口准备
- 确保80(HTTP)、443(HTTPS)端口未被占用:
netstat -ano | findstr ":80 :443"
- 若端口冲突,需终止占用进程(如Apache、Nginx)
- 确保80(HTTP)、443(HTTPS)端口未被占用:
IIS核心组件安装:最小化+按需扩展
通过PowerShell实现静默安装,避免GUI误操作:
# 安装基础Web服务(含HTTP.SYS、W3SVC) Install-WindowsFeature -Name Web-Server -IncludeManagementTools # 按需扩展功能(推荐组合): # 1. ASP.NET 4.8支持 Install-WindowsFeature -Name Web-Asp-Net45 # 2. URL重写模块依赖(需后续手动安装) Install-WindowsFeature -Name Web-Url-Auth # 3. 动态内容压缩(提升传输效率) Install-WindowsFeature -Name Web-Http-Compression-Dynamic # 4. 请求筛选(安全防护基础) Install-WindowsFeature -Name Web-Request-Monitoring
关键点:
- 禁止直接安装“Web-Scripting-Tools”(含FTP服务,存在高危漏洞)
- 所有功能安装后重启服务器非必需,但建议执行
Restart-Service W3SVC -Force刷新服务
安全加固:生产环境必做5项配置
-
禁用非必要模块
- 打开IIS管理器 → 服务器节点 → “模块” → 移除
WebDAVModule、Microsoft.Web.Infrastructure(除非必要)
- 打开IIS管理器 → 服务器节点 → “模块” → 移除
-
强化请求过滤规则
- 在“请求筛选”中添加:
- 拒绝
.config、.bak等敏感扩展名 - 拒绝
%00、等非法字符(防路径遍历攻击)
- 拒绝
- 在“请求筛选”中添加:
-
配置SSL/TLS策略
- 使用IIS Crypto工具(Nartac Software官方版):
- 启用TLS 1.2/1.3,禁用SSL 3.0、TLS 1.0/1.1
- 仅保留AES-GCM、ChaCha20-Poly1305加密套件
- 使用IIS Crypto工具(Nartac Software官方版):
-
应用池隔离
- 每站点独立应用池,启用“隔离模式”:
- .NET版本匹配(如v4.0集成模式)
- 身份设置为
ApplicationPoolIdentity(避免使用LocalSystem)
- 每站点独立应用池,启用“隔离模式”:
-
日志与审计
- 默认日志路径
%SystemDrive%\inetpub\logs\LogFiles - 启用W3C扩展字段:
cs-uri-stem、cs(User-Agent)、sc-status - 启用失败请求跟踪(FREB):
<traceFailedRequestsLogging enabled="true" directory="C:\logs\fails" />
- 默认日志路径
站点发布:从零到可用的3步流程
-
创建网站目录
- 示例路径:
D:\Websites\MySite - 权限设置:
IIS_IUSRS:读取 & 执行NETWORK SERVICE:修改(仅需写入时)
- 示例路径:
-
配置绑定与主机头
- 主机头必须与DNS记录一致(如
www.example.com) - HTTPS绑定需提前导入证书(SHA-256算法,密钥长度≥2048位)
- 主机头必须与DNS记录一致(如
-
验证部署
- 本地测试:
curl -I http://localhost - 外网测试:
openssl s_client -connect www.example.com:443 -tls1_2
- 关键指标:状态码200、响应时间<200ms、证书链完整
- 本地测试:
运维监控:持续保障可用性
- 性能计数器监控:
Web Service\Current Connections(>1000需扩容)ASP.NET Apps v4.0.30319\Requests/Sec(异常波动预警)
- 自动化脚本:
# 每日检查站点健康状态 $response = Invoke-WebRequest -Uri "http://localhost/health" -UseBasicParsing if ($response.StatusCode -ne 200) { Send-MailMessage ... }
常见问题解答
Q:安装IIS后无法访问80端口,但服务显示正常?
A:检查Windows防火墙规则运行netsh advfirewall firewall show rule name=all | findstr "HTTP",确保“World Wide Web Services (HTTP Traffic-In)”已启用,若未启用,执行:
Enable-NetFirewallRule -DisplayGroup "World Wide Web Services (HTTP Traffic-In)"
Q:部署ASP.NET Core应用时返回502.5错误?
A:根本原因为缺少.NET Core运行时或应用池模式错误。
解决方案:
- 安装对应版本的Hosting Bundle(如
.NET 8.0 Hosting Bundle) - 应用池设置为“无托管代码”,禁止启用ASP.NET
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/175651.html