当前位置: 首页 > 面试题库 >

X-Forward-Proto和Flask

魏鸿禧
2023-03-14
问题内容

我在本SO问答中也描述了同样的问题。该问题的答案是一个不错的解决方法,但我不理解基本问题。在负载平衡器处终止SSL并在负载平衡器与Web/应用服务器之间使用HTTP十分常见。哪一部分堆栈不遵守X-Forwarded-Proto?是werkzeug吗?烧瓶?uwsgi?

就我而言,我使用的是AWS ELB(设置了X-Forwarded-Proto)=> Nginx(它沿着X-Forwarded-
Proto转发到uwsgi)。但是在python应用程序中,我必须按照上面提到的问题中的描述将Flask Request子类化。

由于这是一种常见的部署方案,因此似乎应该有一个更好的解决方案。我想念什么?


问题答案:

您缺少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头部也咨询过,所有接头支持多个值。



 类似资料:
  • X-Forwarded-Proto(XFP)报头是用于识别协议(HTTP 或 HTTPS),其中使用的客户端连接到代理或负载平衡器一个事实上的标准报头。您的服务器访问日志包含在服务器和负载平衡器之间使用的协议,但不包括客户端和负载平衡器之间使用的协议。要确定客户端和负载平衡器之间使用的协议,X-Forwarded-Proto可以使用请求标头。 此标头的标准化版本是 HTTP Forwarded标头

  • FORWARD FORWARD chain上主要实现安全组的功能。用户在配置缺省安全规则时候(例如允许ssh到vm,允许ping到vm),影响该chain。 #iptables --line-numbers -vnL FORWARDChain FORWARD (policy ACCEPT 0 packets, 0 bytes)num pkts bytes target prot opt

  • 本文向大家介绍forward 和 redirect 的区别?相关面试题,主要包含被问及forward 和 redirect 的区别?时的应答技巧和注意事项,需要的朋友参考一下 forward 是转发 和 redirect 是重定向: 地址栏 url 显示:foward url 不会发生改变,redirect url 会发生改变; 数据共享:forward 可以共享 request 里的数据,red

  • Go语言开发的端口转发工具(for port data forward) 开发语言:GO 控制台框架:beego 功能介绍 支持 Web 控制台添加端口映射 支持对每条端口映射进行开启和关闭控制 支持 RestfulAPI 接口,方便被其它系统集成 支持每条端口转发的同时,再分发给多个端口,满足某些测试场景 已编译好的程序包 http://git.oschina.net/tavenli/port-

  • Forward 是一个新鲜的电子商务程序(目前还是 alpha 版本)使用 PHP + MongoDB 构建。提供强大的模板、轻松的定制编码和表达式语法。提供 REST 风格的 API 和包括订单、客户和产品系统交互。

  • Forward 是一款腾讯研发并开源的 GPU 高性能推理加速框架。它提出了一种解析方案,可直接加载主流框架模型(Tensorflow / PyTorch / Keras / ONNX)转换成 TensorRT 推理加速引擎,帮助用户节省中间繁杂的模型转换或网络构建步骤。 相对于直接使用 TensorRT,Forward 更易用以及更容易扩展支持更多模型和算子。目前,Forward 除了覆盖支持主