问题1

Nginx 配置导致 FastAPI 接口和验证码请求失败

问题描述

  • 现象:在代理模式(APP_IS_PROXY = true)下,前端 Dash 应用的 /getInfo/captchaImage 接口失败,后端日志显示收到 /prod-api/prod-api/getInfo/prod-api/prod-api/captchaImage,返回 404。前端日志显示“请求异常”。

  • 正常情况:设置 APP_IS_PROXY = false,前端直接请求 127.0.0.1:9099,接口和验证码正常。

  • 问题图片

    imageimage image


问题原因

image

  1. 路径重复
    • 应用配置:APP_IS_PROXY = trueAPP_PROXY_PATH = '/prod-api',前端请求 http://dfa.mxdx.com/prod-api/getInfo
    • FastAPI 期望 /prod-api/getInfo/prod-api/captchaImage,但收到 /prod-api/prod-api/getInfo
    • 原因:前端可能重复添加 /prod-api,Nginx 的 rewrite 因未知原因不剥离一层前缀。
    • 例子:前端请求 /prod-api/prod-api/getInfo → Nginx 转发 /prod-api/getInfo → FastAPI 404。
  2. Nginx 配置问题
    • 原配置用 /api/ 和端口 8000,不匹配 APP_PROXY_PATH = '/prod-api'APP_BASE_URL = '127.0.0.1:9099'
    • rewrite 规则未能处理双重 /prod-api
  3. 非代理模式正常
    • APP_IS_PROXY = false 时,前端直接请求 127.0.0.1:9099/prod-api/getInfo,路径正确。

核心原因:前端重复添加 /prod-api,Nginx 未完全剥离,导致 FastAPI 收到错误路径(如 /prod-api/getInfo)。


解决方案

  1. 关闭代理模式

    • 设置:APP_IS_PROXY = false
    • 效果:前端直接请求 127.0.0.1:9099/prod-api/getInfo,绕过 Nginx,接口和验证码正常。
    • 例子:请求 http://127.0.0.1:9099/prod-api/captchaImage → FastAPI 返回 200。
    • 缺点:不适合生产环境,暴露后端端口。
  2. 修改代理路径

    • 设置:APP_PROXY_PATH = '/'或者置空

    • 效果:前端请求 http://dfa.mxdx.com/prod-api/getInfo,Nginx 直接转发到 127.0.0.1:9099/prod-api/getInfo,无需剥离前缀。

    • 例子:请求 http://dfa.mxdx.com/prod-api/captchaImage → FastAPI 日志 GET /captchaImage HTTP/1.1 200 OK

    • 成功图片

      image image

梦葉樱 all right reserved,powered by Gitbook该文件最后修改时间: 2025-07-24 21:51:02

results matching ""

    No results matching ""