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_HOST
,SERVER_NAME
和SERVER_PORT
.X-Forwarded-Port
集合HTTP_HOST
和SERVER_PORT
.X-Forwarded-Prefix
集合SCRIPT_NAME
.
您必须告诉中间件每个头设置了多少个代理,以便它知道要信任哪些值。信任来自客户机而不是代理的值是一个安全问题。
头的原始值存储在wsgi环境中,作为
werkzeug.proxy_fix.orig
听写。- 参数:
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_addr
,orig_wsgi_url_scheme
,以及orig_http_host
都被移除了。在 0.15 版本发生变更: 所有Header都支持多个值。每个标头都配置有单独数量的受信任代理。
在 0.15 版本发生变更: 原始WSGI环境值存储在
werkzeug.proxy_fix.orig
迪克特。在 0.15 版本发生变更: 支持
X-Forwarded-Port
和X-Forwarded-Prefix
.在 0.15 版本发生变更:
X-Forwarded-Host
和X-Forwarded-Port
修改SERVER_NAME
和SERVER_PORT
.