1. IIS网站部署与优化全攻略作为Windows Server平台最常用的Web服务器软件IISInternet Information Services承载着大量企业级网站的稳定运行。我在过去五年中部署过上百个IIS站点从简单的企业官网到高并发电商平台都有涉及。今天就来分享一套经过实战检验的IIS部署与优化全流程方案包含从环境搭建到性能调优的完整知识体系。2. 环境准备与基础部署2.1 IIS安装与基本配置在Windows Server 2019上安装IIS推荐使用服务器管理器打开服务器管理器控制台选择添加角色和功能在服务器角色中勾选Web服务器(IIS)建议安装的管理功能包括静态内容压缩动态内容压缩HTTP重定向请求筛选日志记录工具注意生产环境务必取消安装FTP服务器等非必要组件减少攻击面安装完成后通过以下命令验证IIS核心服务状态Get-Service -Name W3SVC, WAS2.2 网站发布基础流程典型网站发布包含三个关键步骤应用程序池配置新建专用应用程序池与默认池隔离.NET CLR版本选择v4.0托管管道模式推荐集成内存限制建议设为物理内存的60%站点绑定设置主机名绑定多域名场景HTTPS绑定需要提前准备SSL证书推荐开启HTTP/2协议支持内容部署方式Web Deploy一键发布适合VS开发项目手动文件复制传统方式Git自动部署现代CI/CD流程3. 性能优化实战技巧3.1 静态资源优化方案通过实测以下配置可使静态资源加载速度提升40%以上configuration system.webServer staticContent clientCache cacheControlModeUseMaxAge cacheControlMaxAge30.00:00:00 / /staticContent httpCompression scheme namegzip dll%Windir%\system32\inetsrv\gzip.dll / dynamicTypes add mimeTypetext/* enabledtrue / add mimeTypeapplication/javascript enabledtrue / /dynamicTypes /httpCompression /system.webServer /configuration3.2 动态请求处理优化针对ASP.NET应用的优化要点应用程序池配置关闭重叠回收避免请求中断固定工作进程数避免频繁创建设置合理的回收条件内存/时间阈值会话状态管理将会话状态移出进程推荐SQL Server模式设置适当的超时时间通常30-60分钟输出缓存配置caching outputCacheSettings outputCacheProfiles add nameCache30Min duration1800 varyByParam* / /outputCacheProfiles /outputCacheSettings /caching4. 安全加固指南4.1 常见漏洞防护请求过滤配置限制HTTP方法禁用PUT/DELETE等设置最大请求长度防DoS攻击过滤特殊字符防SQL注入头信息安全移除Server头避免版本泄露添加安全相关HTTP头X-XSS-ProtectionX-Content-Type-OptionsStrict-Transport-Security4.2 SSL/TLS最佳实践证书管理使用2048位以上RSA密钥定期更新证书建议1年周期启用OCSP装订提高握手速度协议配置禁用SSLv3/TLS1.0优先使用TLS1.2/1.3配置加密套件顺序5. 运维监控与排错5.1 性能监控方案推荐使用以下性能计数器Web Service: Bytes Sent/SecASP.NET Applications: Requests/SecMemory: Available MBytesProcessor: % Processor Time通过PowerShell脚本定期采集Get-Counter \Web Service(*)\Bytes Sent/sec -SampleInterval 5 -MaxSamples 125.2 常见错误排查HTTP 500.19错误检查applicationHost.config权限验证模块加载顺序排查重定向循环工作进程崩溃分析Windows事件日志检查内存dump文件验证第三方模块兼容性连接数不足调整 配置优化Keep-Alive超时考虑增加服务器节点6. 高级部署场景6.1 负载均衡配置在NLB环境下的特殊配置ARRApplication Request Routing安装服务器场配置健康检查设置会话亲和性策略基于Cookie/IP6.2 容器化部署在Docker中运行IIS的要点FROM mcr.microsoft.com/windows/servercore/iis RUN dism /online /enable-feature /all /featurename:IIS-ASPNET45 /NoRestart COPY ./website /inetpub/wwwroot提示容器化部署需要特别注意文件系统权限和日志收集配置7. 实战经验分享在最近一个电商项目部署中我们通过以下优化使QPS从800提升到2500启用动态内容压缩节省30%带宽调整输出缓存策略命中率提升至65%优化会话状态存储改用Redis缓存预编译ASP.NET视图减少首次加载延迟另一个值得注意的案例是通过分析IIS日志发现爬虫流量占用了60%的服务器资源添加以下URL重写规则后有效缓解rule nameBlockBadBots stopProcessingtrue match url.* / conditions add input{HTTP_USER_AGENT} patternAhrefsBot|MJ12bot / /conditions action typeCustomResponse statusCode403 / /rule对于内存泄漏问题我的排查步骤通常是使用DebugDiag生成内存dump用WinDbg分析托管堆检查特别大的对象类型追溯相关代码的创建引用链最后分享一个容易忽视的细节在Server Core版本上部署时需要通过命令行管理IISImport-Module WebAdministration Set-ItemProperty IIS:\AppPools\.NET v4.5 -Name processModel.idleTimeout -Value (New-TimeSpan -Minutes 0)