Я запускаю контейнерную flask API, обслуживающую uwsgi и nginx. Теперь, когда я пытаюсь добавить SSL к своему API, у меня возникли некоторые проблемы. Согласно этому ответу: nginx с uwsgi и flask показывает неверный запрос только для соединений https Я не должен изменять свои настройки uwsgi, когда перед ним стоит NGINX.
Я использую flask -restplus, который обеспечивает чванство. На http://domain/api/ я получаю свою обычную документацию Swagger, и все мои конечные точки работают нормально. В https://domain/api/ я получаю пустую страницу Swagger с «Определением API не предоставлено», и ни одна из конечных точек не присутствует.
Другими словами, доступ к моему экземпляру flask по HTTPS работает нормально. Чего я не могу понять, так это как заставить flask обслуживать мои конечные точки через HTTPS вместо HTTP (или, желательно, обоих). Здесь есть несколько ответов о SO, который добавляет контекст к функции app.run()
, но это справедливо только при использовании встроенного сервера flask, что не имеет смысла в среде prod, где вам нужен SSL.
Вот мой server.py
:
from flask import Flask
from flask_cors import CORS
from flask_restplus import Api
from chatbot.api.v1.dialogflow import dialog_api as v1_dialog_api
from chatbot.api.v1.web import web_api as v1_web_api
from chatbot.api.v2.api import api as v2_api
app = Flask(__name__)
app.register_blueprint(v1_dialog_api)
app.register_blueprint(v1_web_api)
api = Api(app, version='2.1')
api.add_namespace(v2_api)
CORS(app)
Спасибо.