存在题目中的问题时,我们可能有这几种情况:
1、使用了CDN服务;
2、使用了反向代理服务
目前在主流的网站部署下,很多的网站都使用了CDN这一技术,以解决某种情况下的性能压力或安全等方面的可能,那么使用了CDN后,可想而知,多了一次路径。CDN的路径会干扰到你物理服务器在获取用户数据,其中最为明显的就是用户的浏览器标识和用户的真实IP,在未使用CDN前,我们一般通过remote_addr来直接获取,但是使用了CDN后,我们需要换种思路了。
其实CDN厂商已经帮我们考虑好了,我们只要改remote_addr为$proxy_add_x_forwarded_for即可,为什么?因为CDN厂商帮我们中转了一下用户的信息。
好了,再谈第二个,使用了反向代理,这也是主流部署下的一种技术方案,简单地理解就是负载均衡。这种情况下,导致无法获取直接信息的可能,是部署人员自己的问题,为何这么说?
在nginx配置中的location节点中加入以下内容:
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
你会发现问题都已经解决了,好了,伊凡门户就祝你好运了~