这个问题发生在我们公司的服务器迁移到阿里云后,并且使用了阿里云云盾,加上我在centOS 7.2 下使用 nginx 1.10.1 做网站的负载均衡;开始发现获取的用户ip都是 云盾的回源ip,无法获取真实的 ip。
今天有兴研究了一下这个问题,终于解决,要点如下:
1. nginx 编译安装的时候需要带参数:--with-http_realip_module
2. nginx 配置文件里面需要加如下三行
第二行我加马赛克的,是我服务器的内网ip,第三行是关键;加在 http
模块里面;
然后我们就可以,在 java 里面 使用 request.getAttribute("HTTP_X_FORWARDED_FOR") 获取到 真实的ip; 在 asp.net 里面使用 Request.ServerVariables["HTTP_X_FORWARDED_FOR"] 。
大功告成!