使用CloudFlare的CDN服务之后,网站访客的IP地址默认都显示为CF CDN的IP地址,而不是用户真实IP。对于电商客户分析来说,缺少了很重要的一个基础数据,我们无法知道客户真实的国家和地区。还好CF官方有相应的解决方案

Apache2.4 + Centos 8具体执行方案如下:

CF使用了自己的CF-Connecting-IP头来获取真实IP,需要用到Apache的mod_remoteip模块。Apache2.4默认自带了mod_remoteip模块,所以直接使用即可。

一、创建配置文件:

sudo vi /etc/httpd/conf.modules.d/httpd-remoteip.conf

点击a,插入下面代码,包括CF的CDN IP

RemoteIPHeader CF-Connecting-IP
RemoteIPTrustedProxy 173.245.48.0/20
RemoteIPTrustedProxy 103.21.244.0/22
RemoteIPTrustedProxy 103.22.200.0/22
RemoteIPTrustedProxy 103.31.4.0/22
RemoteIPTrustedProxy 141.101.64.0/18
RemoteIPTrustedProxy 108.162.192.0/18
RemoteIPTrustedProxy 190.93.240.0/20
RemoteIPTrustedProxy 188.114.96.0/20
RemoteIPTrustedProxy 197.234.240.0/22
RemoteIPTrustedProxy 198.41.128.0/17
RemoteIPTrustedProxy 162.158.0.0/15
RemoteIPTrustedProxy 104.16.0.0/12
RemoteIPTrustedProxy 172.64.0.0/13
RemoteIPTrustedProxy 131.0.72.0/22
RemoteIPTrustedProxy 2400:cb00::/32
RemoteIPTrustedProxy 2606:4700::/32
RemoteIPTrustedProxy 2803:f800::/32
RemoteIPTrustedProxy 2405:b500::/32
RemoteIPTrustedProxy 2405:8100::/32
RemoteIPTrustedProxy 2a06:98c0::/29
RemoteIPTrustedProxy 2c0f:f248::/32

按esc键退出编辑,然后 :wq 保存退出。

二、添加虚拟主机配置

vi /etc/httpd/conf.d/vhosts.conf

找到你的域名配置,插入header:

RemoteIPHeader CF-Connecting-IP

最终代码类似于:

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName remoteip.andy.support
RemoteIPHeader CF-Connecting-IP
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

三、修改日志格式

打开配置文件:

vi /etc/httpd/conf/httpd.conf

修改

LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined

四、测试语法,重启apache

apachectl configtest

如果提示“Syntax OK“,则可重启apache:

sudo apachectl restart

Over

发表回复