Piwik在代理后端获取真实IP

Piwik在代理后端获取真实IP转载李亚飞大佬的文章:https://www.lyafei.com/运维前几天把piwik切换到了Nginx后端,并且服务器加了HA代理分发,piwik主机仅负责收集数据,包括数据库读写分离,但今天看了下数据发现所有来源IP都是代理IP,因为要对接大数据组,所以抓取丢给kafka的用户ip也都是代理ip,被大数据组骚扰了两天,今天就排查了下问题。首先是服务器location/{proxy_passhttp://xxxx_piwik;proxy_set_.

转载 李亚飞 大佬的文章: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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注