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

时间:2019-02-03 22:02:33

标签: yii2 iis-8 cloudflare

环境:Cloudflare代理后面的IIS 8

我正在Cloudflare后面使用Yii2访问规则来限制IPS的操作,这在不使用Cloudflare代理时效果很好。我想通过Cloudflare进行代理,以便可以使用它们的某些功能,但是如果我目前这样做,Yii会看到Cloudflare服务器地址而不是客户端IP。

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

我最好通过Yii2使用重写或IIS本身或...来实现这一点吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

您可以在guide中了解有关受信任代理的更多信息。

答案 1 :(得分:0)

仅通过使用web.config中的以下内容即可确认是否可以正常使用

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

可在此处找到Cloudflare IP:Cloudflare IP Range