Ben*_*ley 18 python nginx werkzeug flask uwsgi
我有这个问题和答案中描述的完全相同的问题.这个问题的答案是一个很好的解决方法,但我不明白根本问题.在负载均衡器处终止SSL并在负载均衡器和Web/app服务器之间使用HTTP非常常见.什么片段不尊重X-Forwarded-Proto?是werkzeug吗?烧瓶?uwsgi?
在我的情况下,我正在使用AWS ELB(设置X-Forwarded-Proto)=> Nginx(它沿着X-Forwarded-Proto转发到uwsgi).但是在python应用程序中,我必须按照上面引用的问题中描述的Flask Request子类.
由于这是一种常见的部署方案,似乎应该有更好的解决方案.我错过了什么?
Mar*_*ers 34
您缺少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)
Run Code Online (Sandbox Code Playgroud)
如果您安装了Flask,那么您也有Werkzeug.
此组件从X-Forwarded-Proto标头设置WSGI方案.请阅读我上面链接到的关于信任标题的Flask文档以及根据您的具体情况自定义中间件.
| 归档时间: |
|
| 查看次数: |
6083 次 |
| 最近记录: |