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

在IIS上运行FastAPI应用出现Bad Gateway错误该如何解决?

排查步骤及解决方案

  • 核心配置修正(最可能的报错原因)
    IIS的HttpPlatformHandler会为后端进程自动分配随机端口,存储在环境变量%HTTP_PLATFORM_PORT%中,你当前的uvicorn启动参数未绑定该端口,导致IIS无法转发请求到FastAPI服务。将web.config中httpPlatform的arguments属性修改为:
arguments="-m uvicorn main:app --host 127.0.0.1 --port %HTTP_PLATFORM_PORT%"

如果你的应用使用了虚拟环境,需要把processPath的值替换为虚拟环境内python.exe的完整路径。

  • 权限检查
    给以下两个目录授予IIS运行用户(对应站点应用程序池的身份用户、或IUSR用户)读取和执行权限:

    • Python安装目录(c:\Python\Python310\)
    • FastAPI应用的站点根目录
  • 基础运行验证
    手动打开服务器命令提示符,cd到站点根目录,执行以下命令验证应用是否能正常启动:

c:\Python\Python310\python.exe -m uvicorn main:app

如果执行时报模块不存在等错误,说明对应依赖未正确安装到系统Python环境中,执行pip install fastapi uvicorn安装所需依赖即可。

  • 日志排查
    你已经开启了stdoutLogEnabled="true",直接到站点根目录下查找生成的stdout日志文件,日志中会记录应用启动时的具体错误信息,可直接定位问题。

  • HttpPlatformHandler验证
    打开IIS的模块管理界面,确认HttpPlatformHandler已正确安装,未安装的话需要先完成该组件的安装才能正常转发请求。


修改后可用的web.config参考:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
     <system.webServer>
    <handlers>
      <add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
    </handlers>
    <httpPlatform processPath="c:\Python\Python310\python.exe"
                  arguments="-m uvicorn main:app --host 127.0.0.1 --port %HTTP_PLATFORM_PORT%"
                  stdoutLogEnabled="true"
                  startupTimeLimit="60"
                  processesPerApplication="16">
      <environmentVariables>
        <environmentVariable name="TEMPLATE_STRING" value="some-random-string-text" />
      </environmentVariables>
    </httpPlatform>
  </system.webServer>
</configuration>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:24:02