解决nginx中不能获取真实ip的可能

存在题目中的问题时,我们可能有这几种情况:

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;

你会发现问题都已经解决了,好了,伊凡门户就祝你好运了~

相关推荐:
一个开源的GUI原型工具,可用于所有平台。 Pencil的目的是提供一个免费的开源GUI原型工具,人们可以很容易地安装和使用它在流行的桌面平台上创建原型。 简单的GUI原型 Pencil提供了各种内置的形状集合,用 …
背景信息: 2019年3月26日,监测到Apache Tomcat近日发布安全更新,披露了1个远程拒绝服务的漏洞:CVE-2019-0199,开启HTTP/2的Apache Tomcat可被远程拒绝服务攻击。 漏洞描述: Apache Tomcat在实现HTTP/2 …
apt-get install rungetty echo "exec /sbin/rungetty tty1 --autologin root" &&/etc/init/tty1.conf echo startx && /root/.bash_profile 重启就好了,且为root登录的权限
VMware 11以上默认建立好的OSX客户机直接运行会Crash,有两个方案解决: VM换成HW 10 或者编辑VMX文件, 加入smc.version = 0 当然我们推荐第二种。 注意建好之后不要急着打开客户机, 因为直接打开你会发 …
该风险可能产生恶意发送广播,拦截有序广播。 如果它们只被同一个软件中的代码调用,将broadcast属性改为android:exported="false",如果组件需要对外暴露,应该通过自定义权限限制对它的调用。
拿起手机扫一扫即可带走我!