环境:IIS 8落后的CloudFlare代理
我使用的是背后的CloudFlare Yii2访问规则来限制IPS,不使用CloudFlare的代理时,工作正常操作。我想代理通过CloudFlare的,所以我可以使用他们的一些特点,但如果我现在做的Yii看到CloudFlare的服务器地址,而不是客户端的IP。
我相信,通过IPS的Yii2艾策斯规则限制措施使用REMOTE_ADDR
头,我想用头HTTP_CF_CONNECTING_IP
。就如何更好地实现这一目标的任何想法?
我是不是最好通过Yii2使用一个代理或IIS本身或实现这...?
您需要配置Request::$trustedHosts
您代理的IP地址范围和Request::$ipHeaders
到允许的头,这将被用来获得使用IP列表。例如,在你的web配置:
'request' => [
// ...
'trustedHosts' => [
'10.0.2.0/24' => [
'HTTP_CF_CONNECTING_IP',
],
],
'ipHeaders' => [
'HTTP_CF_CONNECTING_IP',
],
],
请确保您在trustedHosts
正确配置IPS - 它匹配指定范围内的所有主机都可以伪造用户IP发送HTTP_CF_CONNECTING_IP
头。
你可以阅读更多关于guide信任代理。
只是为了确认我已经用我的web.config以下这个工作
'request' => [
// ...
'trustedHosts' => [
'103.21.244.0/22' => [
'cf-connecting-ip',
],
// ...
],
'ipHeaders' => [
'cf-connecting-ip',
],
],
CloudFlare的IP地址可以在这里找到:Cloudflare IP Range