如何在IIS10站点级web.config中启用deflate动态压缩
解决方案:IIS 10站点级启用Deflate动态压缩
1. 修正ApplicationHost.config的Scheme权限
默认情况下,IIS <httpCompression>节点下的<schemes>子节点overrideModeDefault为Deny,即便父节点overrideModeDefault设为Allow,也无法在站点级修改Scheme配置。需先调整ApplicationHost.config:
找到对应节点,将<schemes>的overrideModeDefault设为Allow:
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" overrideModeDefault="Allow"> <schemes overrideModeDefault="Allow"> <add name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" /> </schemes> <!-- 其他压缩配置项 --> </httpCompression>
2. 站点级Web.config配置Deflate
在站点的web.config中,添加Deflate Scheme并关联动态压缩规则:
<system.webServer> <httpCompression> <schemes> <remove name="deflate" /> <add name="deflate" dll="%Windir%\system32\inetsrv\gzip.dll" /> </schemes> <dynamicTypes> <add mimeType="application/json" enabled="true" /> <!-- 可添加其他需要压缩的动态MIME类型 --> </dynamicTypes> </httpCompression> <urlCompression doDynamicCompression="true" /> </system.webServer>
3. 验证配置生效
- 重启目标IIS站点(或整个IIS服务)
- 用curl等工具发送带
Accept-Encoding: deflate的请求,检查响应头是否包含Content-Encoding: deflate - 重新启用失败请求追踪,确认
NO_MATCHING_SCHEME错误消失
关键说明
- IIS的
gzip.dll同时处理gzip和deflate两种压缩格式,因此配置deflate时无需更换dll - 必须确保
<schemes>节点的overrideMode设为Allow,否则站点级无法添加新Scheme - 若站点继承了服务器级Scheme配置,先通过
<remove>清理原有规则再添加新规则,避免冲突
内容的提问来源于stack exchange,提问作者Kaumudi Rawat
相关产品推荐
相关产品推荐

