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

uwsgi+nginx部署flask-restx时Swagger UI无法加载如何配置nginx

问题原因

flask-restx默认会在根路径下挂载swagger-ui的静态资源、swagger.json接口描述文件,原有Nginx配置仅转发/api开头的请求到后端服务,swagger相关的资源请求未被转发到uwsgi,被Nginx直接返回404;同时缺少反向代理必要的头信息,导致后端生成的资源路径、接口地址不匹配,最终swagger-ui无法加载。

修复方案

分两步调整配置即可:

1. 修改Nginx配置

编辑/etc/nginx/sites-available/default,替换原有/api路径的转发规则,补充路径重写和代理头配置:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    
    server_name _;

    location /api {
        # 去除请求的/api前缀后转发给后端,匹配后端原生路由
        rewrite ^/api/(.*)$ /$1 break;
        include uwsgi_params;
        # 传递代理头,告知后端服务当前访问的前缀、域名、协议信息
        uwsgi_param SCRIPT_NAME /api;
        uwsgi_param Host $host;
        uwsgi_param X-Real-IP $remote_addr;
        uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for;
        uwsgi_param X-Forwarded-Proto $scheme;
        uwsgi_pass unix:/tmp/myproj.sock;
    }
}

配置修改完成后执行以下命令校验并重载Nginx:

# 校验配置合法性
nginx -t
# 校验通过后重载配置
systemctl reload nginx

2. 调整Flask应用配置

初始化flask-restx的Api实例时,显式配置接口前缀,避免生成的资源地址错误:

from flask import Flask
from flask_restx import Api

app = Flask(__name__)

api = Api(
    app,
    version="1.0",
    title="项目API文档",
    # 所有业务接口的统一前缀
    prefix="/api"
)

# 后续正常注册你的接口命名空间即可

修改完成后重启uwsgi服务,让应用配置生效。

验证

配置生效后,访问http://你的服务器IP/api/doc(默认swagger文档路径)即可正常加载swagger-ui,所有接口调用路径也会自动带上/api前缀,和反向代理规则匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:48:28