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

使用Cloudflare背后的Yii2访问规则限制IP的操作,yii2,iis-8,cloudflare,Yii2,Iis 8,Cloudflare,环境:Cloudflare代理后的IIS 8 我使用Cloudflare背后的Yi2访问规则来限制IPS的操作,这在不使用Cloudflare代理时效果很好。我想通过Cloudflare代理,这样我就可以使用他们的一些功能,但如果我现在这样做,我会看到Cloudflare服务器地址,而不是客户端IP地址 我相信Yii2 Acces规则限制IP的操作使用远程地址头,我想使用头HTTP\u CF\u连接\u IP。关于如何最好地实现这一点,有什么想法吗 我是通过Yi2通过覆盖或IIS本身或…?实现这

环境:Cloudflare代理后的IIS 8

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

我相信Yii2 Acces规则限制IP的操作使用
远程地址
头,我想使用头
HTTP\u CF\u连接\u IP
。关于如何最好地实现这一点,有什么想法吗

我是通过Yi2通过覆盖或IIS本身或…?

实现这一点的最佳方法,您需要配置代理的IPs范围和用于获取IP的允许标头列表。例如,在web配置中:

'request' => [
    // ...
    'trustedHosts' => [
        '10.0.2.0/24' => [
            'HTTP_CF_CONNECTING_IP',
        ],
    ],
    'ipHeaders' => [
        'HTTP_CF_CONNECTING_IP',
    ],
],
确保在
trustedHosts
中正确配置IP-所有与指定范围匹配的主机都可以通过发送
HTTP\u CF\u CONNECTING\u IP
头来伪造用户IP


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

只是为了确认我在我的web.config中使用了以下内容

“请求”=>[
// ...
“trustedHosts”=>[
'103.21.244.0/22' => [
“cf连接ip”,
],
// ...
],
“ipHeaders”=>[
“cf连接ip”,
],
],


Cloudflare IPs可以在这里找到:

我知道我可以通过一个函数实现这一点,但我特别希望使用Yii2访问规则。这看起来正是我想要的。谢谢@rob006:)我的Google fu让我失望了。我要把书读起来,试一试