环境:Cloudflare代理后面的IIS 8
我正在Cloudflare后面使用Yii2访问规则来限制IPS的操作,这在不使用Cloudflare代理时效果很好。我想通过Cloudflare进行代理,以便可以使用它们的某些功能,但是如果我目前这样做,Yii会看到Cloudflare服务器地址而不是客户端IP。
我相信IPS的Yii2 Acces Rule限制操作使用REMOTE_ADDR
标头,我想使用标头HTTP_CF_CONNECTING_IP
。关于如何最好地实现这一目标的任何想法?
我最好通过Yii2使用重写或IIS本身或...来实现这一点吗?
答案 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