转载 李亚飞 大佬的文章: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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/34406.html