X-转发-用于代理修复

该模块提供了一个中间件,用于根据 X-Forwarded- 可以设置在应用程序前面代理的头。

当应用程序在代理服务器后面运行时,WSGi可能会将请求视为来自该服务器而不是真正的客户机。代理设置各种头来跟踪请求的实际来源。

只有当应用程序实际上位于这样的代理之后时,才应该使用此中间件,并且应该使用链接在其前面的代理的数量进行配置。并非所有代理都设置了所有标头。由于传入的报头可能是伪造的,因此您必须设置设置每个报头的代理数量,以便中间件知道应该信任什么。

class werkzeug.middleware.proxy_fix.ProxyFix(app, x_for=1, x_proto=1, x_host=0, x_port=0, x_prefix=0)

根据调整wsgi环境 X-Forwarded- 可以设置应用程序前面的代理。

  • X-Forwarded-For 集合 REMOTE_ADDR .

  • X-Forwarded-Proto 集合 wsgi.url_scheme .

  • X-Forwarded-Host 集合 HTTP_HOSTSERVER_NAMESERVER_PORT .

  • X-Forwarded-Port 集合 HTTP_HOSTSERVER_PORT .

  • X-Forwarded-Prefix 集合 SCRIPT_NAME .

您必须告诉中间件每个头设置了多少个代理,以便它知道要信任哪些值。信任来自客户机而不是代理的值是一个安全问题。

头的原始值存储在wsgi环境中,作为 werkzeug.proxy_fix.orig 听写。

参数:
  • app (WSGIApplication) -- 要包装的wsgi应用程序。

  • x_for (int) -- 要信任的值数 X-Forwarded-For .

  • x_proto (int) -- 要信任的值数 X-Forwarded-Proto .

  • x_host (int) -- 要信任的值数 X-Forwarded-Host .

  • x_port (int) -- 要信任的值数 X-Forwarded-Port .

  • x_prefix (int) -- 要信任的值数 X-Forwarded-Prefix .

from werkzeug.middleware.proxy_fix import ProxyFix
# App is behind one proxy that sets the -For and -Host headers.
app = ProxyFix(app, x_for=1, x_host=1)
Changelog

在 1.0 版本发生变更: 这个 num_proxies 参数和属性; get_remote_addr 方法;以及环境密钥 orig_remote_addrorig_wsgi_url_scheme ,以及 orig_http_host 都被移除了。

在 0.15 版本发生变更: 所有Header都支持多个值。每个标头都配置有单独数量的受信任代理。

在 0.15 版本发生变更: 原始WSGI环境值存储在 werkzeug.proxy_fix.orig 迪克特。

在 0.15 版本发生变更: 支持 X-Forwarded-PortX-Forwarded-Prefix .

在 0.15 版本发生变更: X-Forwarded-HostX-Forwarded-Port 修改 SERVER_NAMESERVER_PORT .