环境: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范围