阿里云ECS获取客户端IP地址
如果用到了阿里的加速CDN和WAF的话,Nginx获取客户端IP就会比较凌乱。
下面是大多数情况下,Nginx的real_ip模块的一种合理配置
至于为什么,需要大家复习一下X-Forwarded-For的原理,这里就不多做解释了。下面是Nginx日志中实际获取到的Header信息
阿里云SLB后NGINX、TOMCAT获取真实IP
先介绍两个nginx模块
a、proxy_module
b、http_realip_module
注:默认 proxy_module 是会安装的,但是 http_realip_module 则需要自己指定编译参数 --with-http_realip_module 才会安装
一、Nginx获取真实IP
由于Nginx位于SLB后面,所以需要SLB监听设置中开启真实IP地址转发
设置位置: http, server, location
这里如果前端只有一个Nginx或者SLB,可以不写ip段那行(实际情况中发现SLB到nginx的情况,即使不写这些设置Nginx日志也可以拿到用户的真实IP)
更多关于 http_realip_module 请参考: http_realip_module 或 http_realip_module
二、tomcat获取真实IP
这里需要Nginx向tomcat转发用户真实IP
配置好之后怎么看tomcat是不是可以拿到真实ip呢?
可以修改tomcat的localhost_acess输出的日志格式来查看配置是否成功
修改方法:修改tomcat配置文件server.xml
这个标签就是设置日志相关的,将这里修改为
或者
修改完之后重启tomcat服务,然后tomcat的localhost_access日志中就会打印出两个IP,一个是客户的真实IP,一个是前端反向代理的NginxIP
使用阿里云 cdn 以后怎么设置获取真实 ip
阿里云cdn显示的不是服务器ip。如果网站刻意通过CDN隐藏,理论上是没办法的。但是很多网站没刻意隐藏,可以查询历史解析记录,或者利用网站漏洞查询,或者其他未加速域名的解析记录查询。