不是VestaCPx使用魔门云后如何取得真实用户IP吗?

魔门云CacheMoment的产品作为反向代理,作用在用户与源服务器之间,所有的请求都会变成有魔门云的节点发起,这样对于一些网站或者应用就可能存在以下问题:

如果你的网站或者APP会根据用户的来源IP做一些逻辑处理,那么现在取得的IP就变成了魔门云的回源节点IP。

同样,log里的记录的来源IP也会变成魔门云的回源节点IP

获取用户的真实IP

魔门云的回源请求中携带了两个有关客户端IP的Header,分别是:

  1. X-Real-IP 如果用户直接访问魔门云,我们会用这个Header来记录用户和我们建立连接的真实IP
  2. X-Forwarded-For 如果用户通过代理(本地缓存,运营商缓存)访问魔门云,我们会通过这个Header来传递代理发来的用户IP

对于nginx用户,可以使用NGINX的这个module: ngx_http_realip_module,以保证能拿到真是用户的IP地址。

增加以下配置:

set_real_ip_from 118.89.239.0/24; # 请将IP替换成魔门云节点IP
real_ip_header X-Real-IP;

在log中记录用户的真实IP

可以在设置log_format时使用

$http_x_forwarded_for

虽说如此但是我早前在添加时会出现配置文件错误而添加失败,不过我今天在折腾前几天的IPv6访问站的记录IP是也是按照帮助文档出现问题,这是一个以前看过但是没有记在心里的配置文件内容引起了我的注意。
第一次配置时报错我还因为没有安装相关模块而在折腾如何安装Nginx模块,看来还是需要了解多一些知识才能愉快的玩耍了。
原来VestaCP的配置文件里包含了使用Cloudflare而获取真实访客IP的配置了,只是里面的IPv6段注释了罢了。

由此我就照葫芦画瓢把本站使用的给修改过来了,不过里面的”real_ip_header CF-Connecting-IP;”和”real_ip_header X-Real-IP;”不能同时存在。基于本服务器只运行一个站点所以可以只使用一个,但是如果搭建了多个网站且使用了不同CDN的不知道是否要通过”real_ip_header CF-Connecting-IP,X-Real-IP;”来解决。

毕竟我没有这方面的知识。

    #Cachemoment https://docs.cachemoment.com/faq/using/ip-list.html
    set_real_ip_from   119.28.0.0/16;
    set_real_ip_from   106.75.0.0/16;
    set_real_ip_from   120.132.0.0/16;
    set_real_ip_from   121.201.0.0/16;
    set_real_ip_from   139.198.0.0/16;
    set_real_ip_from   43.255.29.0/24;
    set_real_ip_from   103.74.193.0/24;
    #2017-9-3 发现新增的
    set_real_ip_from   172.104.64.0/18;
    set_real_ip_from   139.162.64.0/18;
    set_real_ip_from   47.91.200.0/24;
    set_real_ip_from   183.131.51.0/24;
    set_real_ip_from   183.136.206.0/24;
    set_real_ip_from   103.37.44.0/24;
    real_ip_header X-Real-IP;

上述介绍转载于:https://docs.cachemoment.com/faq/using/how-to-get-real-user-ip.html
配置文件节点转载于(节点可能会出现变更):https://docs.cachemoment.com/faq/using/ip-list.html

超越自我吧

2017年7月10日

发布者

ChiuYut

咦?我是谁?这是什么地方? Ya ha!我是ChiuYut!这里是我的小破站!