Ответ 1
Вам не хватает компонента промежуточного программного обеспечения ProxyFix()
. См. Документацию по настройке прокси-сервера Flask.
Не нужно ничего делать подклассом; просто добавьте этот компонент промежуточного программного обеспечения в ваш стек WSGI:
# Werkzeug 0.15 and newer
from werkzeug.middleware.proxy_fix import ProxyFix
from flask import Flask
app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app, x_num=0, x_proto=1)
Если у вас установлен Flask, у вас также есть Werkzeug, но вы прикрепите версию к> = 0.15, чтобы получить обновленную версию ProxyFix
(Flask 1.1.0 и новее уже используют эту версию).
Этот компонент устанавливает схему WSGI из заголовка X -For warded- Proto. Прочитайте документацию Flask, на которую я ссылался выше, о доверии заголовкам и о настройке промежуточного программного обеспечения для вашей конкретной ситуации. Выше я настроил его так, чтобы он смотрел только на X-Forwarded-Proto
, но компонент также может обрабатывать другие X-Forwarded-*
.
Также обратите внимание, что функциональность промежуточного программного обеспечения ProxyFix
была значительно расширена в Werkzeug 0.15; в дополнение к X-Forwarded-Proto
, -For
и -Host
, к ним также X-Forwarded-Port
и -Prefix
, все заголовки поддерживают несколько значений.