Matomo使用CDN后无法正确获取访客Client真实IP - 阿峰博客
Dragon

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

2022-11-25 01:03 273 抢沙发 阿峰博客

背景

最近在查看 matomo 后台访问日志时发现Matomo后台显示的访客IP和实际的Client IP不一致。

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

检查

通过直接访问该IP,发现该IP竟然会返回 404 状态码,然后去腾讯云CDN控制台使用IP归属查询工具,发现该IP腾讯云CDN节点IP。为了保证统计网站访问速度,所以使用了CDN服务。

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

前往腾讯云CDN控制台查看该域名的回源设置,发现已经设置了Tencent-Acceleration-Domain-Name参数Tencent-Acceleration-Domain-Name 参数会自动携带X-Forwarded-For and X-Forwarded-Proto参数回源。

理论来说,配置该参数之后可以正常获取Client IP信息,但是在 matomo 并未生效。

在谷歌搜索一番找到 Stack Overflow 网站的相关问答结果

问答地址:https://serverfault.com/questions/331531/nginx-set-real-ip-from-aws-elb-load-balancer-address

答案如下:

The realip_module states that in case of X-Forwarded-For, this module uses the last ip address in the X-Forwarded-For header for replacement. This module will not work when only real_ip_header and set_real_ip_form are set. This is because this module will use a proxy IP address instead of a client IP. To solve this real_ip_recursive directive should be enabled.

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

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

再次测试

此时测试Client IP获取与本机 IP 一致,问题解决!

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

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

「点点赞赏,手留余香」

还没有人赞赏,快来当第一个赞赏的人吧!

阿峰博客给阿峰博客打赏
×
予人玫瑰,手有余香
  • 1
  • 5
  • 10
  • 20
  • 50
1
支付

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

2022-11-04

2023-02-15

发表评论