Flask Restplus大手笔未加载到Nginx之后

时间:2018-12-08 16:01:10

标签: nginx flask https swagger flask-restplus

我有一个Flask API和一个由Flask Restplus生成的Swagger UI。该API在Nginx容器后面的Docker容器中运行,该容器通过HTTP提供服务。

以下是运行状况检查端点,用于确认API是否正在运行:https://mobydq.net/mobydq/api/v1/health

sqlhandler.mycursor.execute("""
    SELECT * 
    FROM users 
    WHERE username = %s
""", [username])

data = sqlhandler.mycursor.fetchone()
print(data)

但是,应该在以下URL加载的Swagger根本无法加载:https://mobydq.net/mobydq/api/doc

这是Nginx的配置:

{"message":"MobyDQ API running in production mode"}

有人知道为什么不加载Swagger吗?我调查了加载页面时发送的http请求,但并没有太大帮助。我只能看到收藏夹图标加载

enter image description here

我也看了看控制台,看到一个错误,但是我无法说出它的含义:

enter image description here

1 个答案:

答案 0 :(得分:0)

问题在于,当尝试从Swagger(特别是JSON配置文件)获取资源时,Nginx没有正确重定向http请求。

已通过如下更改Nginx配置来解决此问题:

[...]
  # Location for MobyDQ Flask API
  location ~ ^/(mobydq|swaggerui) {
    limit_req zone=default burst=20;
    proxy_pass http://api;
    proxy_redirect   off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
[...]