您缺少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及更高版本已使用该版本)。
该组件从X-Forwarded- Proto标头设置WSGI方案。请阅读我上面链接到的Flask文档,其中包括有关信任标头和根据特定情况自定义中间件的信息。上面,我将其配置为仅查看X-Forwarded- Proto
,但该组件也可以处理其他X-Forwarded-*
配置。
还要注意,ProxyFix
中间件的功能在Werkzeug 0.15中已经得到了很大的扩展。此外X-Forwarded- Proto
,-For
和-Host
中,X-Forwarded-Port
和-Prefix
头部也咨询过,所有接头支持多个值。