我有一个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请求,但并没有太大帮助。我只能看到收藏夹图标加载
:我也看了看控制台,看到一个错误,但是我无法说出它的含义:
答案 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;
}
[...]