跳转到主要内容

当请求来自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-ForX-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 (3.2 kB 查看哈希值)

上传时间

构建发行版

wsgi_cloudflare_proxy_fix-0.1.2-py3-none-any.whl (3.9 kB 查看哈希值)

上传时间 Python 3

支持者