FlaskでURLの作成にHTTPSを使用する
ロードバランサーを使用するとき、URL の作成やリダイレクトに HTTPS を使用したいです。
Flask では、PREFERRED_URL_SCHEME を提供しているが、PREFERRED_URL_SCHEME に https を指定しても機能しなかったのです。
WSGI ライブラリ werkzeug のミドルウェア ProxyFix を利用すれば、HTTPS スキームを使用することができる。
このミドルウェアは、プロキシやロードバランサーが設定した X-Forwarded
ヘッダーに基づいて WSGI 環境変数を自動的に設定する。
from werkzeug.middleware.proxy_fix import ProxyFix
def create_app():
app = Flask(__name__)
...
app.config["PREFERRED_URL_SCHEME"] = 'https'
app.wsgi_app = ProxyFix(app.wsgi_app,
x_for=1, x_proto=1, x_host=1, x_port=1)