最近在查看 matomo 后台访问日志时发现Matomo后台显示的访客IP和实际的Client IP不一致。
通过直接访问该IP,发现该IP竟然会返回 404 状态码,然后去腾讯云CDN控制台使用IP归属查询工具,发现该IP是腾讯云的CDN节点IP。为了保证统计网站访问速度,所以使用了CDN服务。
前往腾讯云CDN控制台查看该域名的回源设置,发现已经设置了Tencent-Acceleration-Domain-Name参数,Tencent-Acceleration-Domain-Name 参数会自动携带X-Forwarded-For and X-Forwarded-Proto参数回源。
理论来说,配置该参数之后可以正常获取Client IP信息,但是在 matomo 并未生效。
Matomo 使用 CDN 后无法正确获取访客 Client 真实 IP插图2
从答案得知,需要修改 Nginx 主配置文件,并添加real_ip_recursive指令。
real_ip_header X-Forwarded-For;
real_ip_recursive on;
set_real_ip_from 0.0.0.0/0;
set_real_ip_from ::/0;
set_real_ip_from需要使用CIDR表示法,0.0.0.0/0代表匹配所有 IPv4 地址,::/0或者0::0/0代表匹配所有 IPv6 地址。
将以上配置内容添加至 Nginx 主配置文件下的http字段内保存并重启 Nginx 即可正常获取Client IP。
此时测试 Client IP 获取与本机 IP 一致,问题解决!