Piwik在代理后端获取真实IP

转载 李亚飞 大佬的文章:https://www.lyafei.com/

运维前几天把piwik切换到了Nginx后端,并且服务器加了HA 代理分发,piwik主机仅负责收集数据,包括数据库读写分离,但今天看了下数据发现所有来源IP都是代理IP,因为要对接大数据组,所以抓取丢给kafka的用户ip也都是代理ip,被大数据组骚扰了两天,今天就排查了下问题。
首先是服务器

location / {
    proxy_pass        http://xxxx_piwik;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    ##HTTP_X_REAL_IP的值是nginx得到的用户REMOTE_ADDR##
}

然后,还是获取的代理ip,说明不是Nginx后端问题。

那就查看是否为piwik代码原因,找到了piwik下core下IP.php文件,在其getIpFromHeader()方法里,发现获取ip直接$_SERVER[‘REMOTE_ADDR’]获取的,修改代码,代码如下:

在这里插入图片描述

提交,结果还是获取的代理ip,说明不是piwik代码问题。

那就检查piwik的配置文件,首先是config下面的global.ini.php文件,找到了ip配置的部分,如图

在这里插入图片描述

尝试修改了下配置,将proxy_client_headers[] = HTTP_X_FORWARDED_FOR 前面的分号去掉,启用,但还是获取的代理ip

那就查看另外一个配置文件config.ini.php,修改该文件,如图

在这里插入图片描述

加上proxy_client_headers[] = HTTP_X_REAL_IP 运行,测试成功,获取到了用户的真实ip地址,大功告成!

期间还参考了阿里的文档获取客户端真实IP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值