当请求来自Cloudflare的IP范围时,根据Cf-Connecting-Ip头部设置REMOTE_ADDR为正确的值。
项目描述
wsgi_cloudflare_proxy_fix 是一个WSGI中间件,它安全地将请求来自Cloudflare时 REMOTE_ADDR 环境变量的值设置为 Cf-Connecting-Ip 头部的值。
此外,它还为所有来自Cloudflare的请求设置 CF_TRUSTED 环境变量为 True。
安装
使用pip安装 wsgi_cloudflare_proxy_fix
pip install wsgi_cloudflare_proxy_fix
用法
以下示例假设正在使用 werkzeug.middleware.proxy_fix.ProxyFix 读取 X-Forwarded-For 和 X-Forwarded-Proto 头部。
对于独立WSGI应用程序
import logging
from wsgi_cloudflare_proxy_fix import CloudflareProxyFix
from werkzeug.middleware.proxy_fix import ProxyFix
application = CloudflareProxyFix(application, log_level=logging.INFO)
application = ProxyFix(application)
对于Flask应用程序
import logging
from wsgi_cloudflare_proxy_fix import CloudflareProxyFix
from werkzeug.middleware.proxy_fix import ProxyFix
def create_app():
app = Flask(__name__)
app.wsgi_app = CloudflareProxyFix(app.wsgi_app, log_level=logging.INFO)
app.wsgi_app = ProxyFix(app.wsgi_app)
return app
测试
为了验证代理修复在您的生产环境中按预期工作,可以通过将以下内容添加到您的应用程序中,使用 CloudflareProxyFixTest 中间件
import logging
from wsgi_cloudflare_proxy_fix import CloudflareProxyFix, CloudflareProxyFixTest
from werkzeug.middleware.proxy_fix import ProxyFix
def create_app():
app = Flask(__name__)
app.wsig_app = CloudflareProxyFixTest(app.wsgi_app, path="/debug/cf-test")
app.wsgi_app = CloudflareProxyFix(app.wsgi_app, log_level=logging.INFO)
app.wsgi_app = ProxyFix(app.wsgi_app)
return app
并对 debug/cf-test 端点发出请求
$ curl http://localhost:5000/debug/cf-test { "CF_TRUSTED": null, "REMOTE_ADDR": "127.0.0.1" "wsgi_cloudflare_proxy_fix.orig": null, } $ curl -H 'X-Forwarded-For: 103.31.4.1' -H 'Cf-Connecting-Ip: 1.2.3.4' http://localhost:5000/debug/cf-test { "CF_TRUSTED": true, "REMOTE_ADDR": "1.2.3.4", "wsgi_cloudflare_proxy_fix.orig": { "REMOTE_ADDR": "103.31.4.1" } }
项目详情
关闭
wsgi_cloudflare_proxy_fix-0.1.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4599087b5a0a7162e1a29a62235aedc35b2a95ada9c05f21fa67a2de41774daa |
|
MD5 | 23fa889dae225ee7b6cb1eadfd542fa1 |
|
BLAKE2b-256 | 6cb3fd2281a91ffe55a69e74aa4b71d031c238059800b3307a8f21184b13b00c |
关闭
wsgi_cloudflare_proxy_fix-0.1.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 801b5585845c3f69033198c231a9234a82fd3a67bfa7bccc7b2221887bfb8c4c |
|
MD5 | e98d8a0109ead2012a2c5f368c0fb170 |
|
BLAKE2b-256 | fe2bedf1c3be586d26a152d7c36ad1281d3a974a0be07bc74b0a01c7be54c01b |