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

Windows下IIS+Flask环境使用ngrok测试的路由连接问题

搞定IIS+Flask+ngrok的跨端口路由访问问题

核心逻辑

ngrok一次只能把一个本地端口映射到公网,没法同时暴露IIS的80和Flask的5000。最靠谱的办法是让IIS当“中转”,把前端发往Flask的请求转发到本地5000端口,这样只用ngrok映射IIS的80就行,所有请求走同一个公网URL,页面和接口都能正常联动。

具体操作步骤

  1. 给IIS装反向代理组件
    打开IIS管理器,通过右上角的「Web平台安装程序」,搜索安装URL重写和应用程序请求路由(ARR)这两个模块——没有它们没法做请求转发。

  2. 配置IIS的转发规则

    • 找到你在IIS上部署的网站,右键添加「URL重写规则」
    • 规则名随便填,比如「转去Flask接口」
    • 匹配规则选「正则表达式」,模式填^api/(.*)(这里假设你的Flask接口都以/api/开头,比如把原来的/login改成/api/login;如果你的路由前缀不一样,自己调整这个匹配模式)
    • 操作选「重写」,重写URL填http://localhost:5000/api/{R:1},记得勾选「停止处理后续规则」
      这样所有带/api/前缀的请求,IIS都会自动转发到Flask的5000端口。
  3. 修改前端的请求路径
    登录页里的认证请求,直接用相对路径,比如fetch("/api/login"),不用加任何域名或端口。

  4. 启动服务和ngrok

    • 先启动Flask服务,确保它监听localhost:5000
    • 确认IIS正常运行
    • 执行ngrok http 80,用生成的公网URL访问,此时登录请求会通过IIS转发到Flask,就能正常完成认证了。

为啥之前的方案都失败?

  • 方案1:用ngrok的URL加Flask路由——ngrok只映射了80端口,本地5000没暴露给公网,外部根本访问不到Flask,自然失败。
  • 方案2:ngrok映射5000——IIS的80页面没被映射,连登录页都打不开,更别说请求接口了。
  • 方案3:直接用相对路径——页面是从IIS的80加载的,请求会发到80端口,但IIS没配置Flask路由的处理规则,所以返回404。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:04:52