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

使用Ngrok暴露本地IIS时出现ERR_TOO_MANY_REDIRECTS错误求助

解决Ngrok+IIS的ERR_TOO_MANY_REDIRECTS问题

这个错误是请求在Ngrok和IIS之间陷入了无限重定向循环,结合你的情况,核心问题肯定出在IIS的配置和Ngrok转发逻辑的冲突上,和酒店WiFi无关(毕竟请求已经能到本地机器)。下面是具体排查和修复方案:

  • HTTPS强制跳转的协议不匹配
    如果你在IIS里设了HTTP转HTTPS的规则,很容易触发循环:比如你用ngrok http 80转发HTTP端口,用户访问Ngrok提供的HTTPS域名时,Ngrok会把请求转成HTTP发给IIS;IIS收到HTTP请求后又强制跳转到HTTPS,Ngrok再把跳转请求转回HTTP,反复循环。
    修复:

    • 要么修改IIS的重写规则,加上对{HTTP_X_FORWARDED_PROTO}的判断,当这个头部是https时不跳转,规则代码如下:
      <rule name="HTTP to HTTPS redirect" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
          <add input="{HTTPS}" pattern="off" />
          <add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" negate="true" />
        </conditions>
        <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
      </rule>
      
    • 要么直接用Ngrok转发HTTPS端口:ngrok http https://localhost:443,保持协议一致。
  • IIS站点绑定的主机名不兼容
    如果你给IIS站点绑定了特定主机名(比如localhost),Ngrok转发过来的请求Host头是它自己的公网域名,IIS会把请求路由到默认站点,要是默认站点又有跳转指向你的目标站点,就会形成循环。
    修复:给目标站点添加绑定,主机名留空(接受任意Host头),或者临时把Ngrok的公网域名加到绑定里(注意每次Ngrok重启域名会变,要更新)。

  • Ngrok转发的Host头不对
    可以试试在启动Ngrok时指定Host头,强制匹配IIS站点的绑定:

    ngrok http 80 --host-header="localhost"
    

    把localhost换成你IIS站点绑定的主机名就行。

  • 排查IIS的重写规则
    临时禁用目标站点的所有URL重写、重定向规则,测试Ngrok访问是否正常。如果正常,再逐个启用规则,找出触发循环的那条,调整规则逻辑。

内容的提问来源于stack exchange,提问作者Ayo Adesina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:52:08