You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell在IIS中为特定站点禁用HTTP/2?

特定IIS站点禁用HTTP/2的实现方案

IIS 10 没有原生支持站点级别的HTTP/2开关,但可以通过以下两种可靠方法实现目标,同时保留其他站点的HTTP/2功能:

方法1:通过URL Rewrite添加响应头强制客户端降级

这是最安全且无兼容性风险的方案,核心是通过响应头告知客户端该站点不支持HTTP/2:

  1. 确保已安装IIS URL Rewrite模块(可通过服务器管理器→添加角色功能→Web服务器→应用程序开发→URL Rewrite完成安装)。
  2. 编辑目标站点的web.config,添加以下配置段:
<system.webServer>
  <rewrite>
    <rules>
      <rule name="Disable HTTP/2 for this site" stopProcessing="true">
        <match url=".*" />
        <action type="CustomResponse" statusCode="200" />
        <serverVariables>
          <set name="RESPONSE_Alt-Svc" value="clear" />
          <set name="RESPONSE_Upgrade" value="http/1.1" />
        </serverVariables>
      </rule>
    </rules>
  </rewrite>
</system.webServer>
  • Alt-Svc: clear会清除客户端存储的该站点HTTP/2备选服务记录
  • Upgrade: http/1.1强制客户端使用HTTP/1.1协议发起请求

方法2:切换应用程序池为经典模式(谨慎使用)

HTTP/2仅在IIS应用程序池的集成模式下支持,切换为经典模式会自动禁用该站点的HTTP/2,但此方法可能影响依赖集成模式的ASP.NET等应用,需提前测试:

  1. 以管理员身份运行PowerShell,执行以下命令:
    • 获取目标站点的应用程序池名称:
    Get-IISSite -Name "你的站点名称" | Select-Object -ExpandProperty ApplicationPool
    
    • 修改应用程序池为经典模式:
    Set-ItemProperty "IIS:\AppPools\你的应用程序池名称" -Name managedPipelineMode -Value Classic
    

验证禁用效果

使用curl命令或浏览器开发者工具验证协议版本:

curl -v --http2 https://你的站点域名

若返回的协议为HTTP/1.1,则说明HTTP/2已成功禁用。

内容的提问来源于stack exchange,提问作者Mselmi Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 12:27:35