Matomo 使用 CDN 后无法正确获取访客 Client 真实 IP

最近在查看 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 一致,问题解决

Last modification:September 20th, 2024 at 10:30 pm

Leave a Comment