使用 Cloudflare 背后的 Yii2 访问规则来限制 ip 的操作



环境:Cloudflare 代理后面的 IIS 8

我正在使用 Cloudflare 后面的 Yii2 访问规则来限制 IPS 的操作,这在不使用 Cloudflare 代理时工作正常。我想通过 Cloudflare 代理,这样我就可以使用他们的一些功能,但如果我现在这样做,Yii 看到的是 Cloudflare 服务器地址而不是客户端 IP。

我相信 Yii2 访问规则限制 IPS 的操作使用 REMOTE_ADDR 标头,我想使用标头HTTP_CF_CONNECTING_IP。关于如何最好地实现这一目标的任何想法?

我最好通过 Yii2 覆盖或 IIS 本身还是...?

您需要配置代理的 IP 范围Request::$trustedHosts,并Request::$ipHeaders到将用于获取使用 IP 的允许标头列表。例如,在您的 Web 配置中:

'request' => [
    // ...
    'trustedHosts' => [
        '10.0.2.0/24' => [
            'HTTP_CF_CONNECTING_IP',
        ],
    ],
    'ipHeaders' => [
        'HTTP_CF_CONNECTING_IP',
    ],
],

确保正确配置trustedHosts IP - 所有与指定范围匹配的主机都将能够通过发送HTTP_CF_CONNECTING_IP标头来伪造用户 IP。

您可以在指南中阅读有关受信任代理的更多信息。

只是为了确认我在我的 web.config 中使用以下内容可以正常工作

'request' => [ // ... 'trustedHosts' => [ '103.21.244.0/22' => [ 'cf-connecting-ip', ], // ... ], 'ipHeaders' => [ 'cf-connecting-ip', ], ],

Cloudflare IP可以在这里找到:Cloudflare IP范围

最新更新