request nginx 透传获取真实的ip

来源:互联网 发布:mac怎么转换输入法 编辑:程序博客网 时间:2024/06/04 18:20

nginx.conf配置:

location / {        proxy_pass http://127.0.0.1:8080/myweb/;       proxy_redirect    off;       proxy_set_header  Host             $host;       proxy_set_header  X-Real-IP        $remote_addr;       proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;  }  

后端获取方式:

/***  * 获取客户端IP地址;这里通过了Nginx获取;X-Real-IP,  * @param request  * @return  */  public static String getClientIP(HttpServletRequest request) {      String fromSource = "X-Real-IP";      String ip = request.getHeader("X-Real-IP");      if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {          ip = request.getHeader("X-Forwarded-For");          fromSource = "X-Forwarded-For";      }      if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {          ip = request.getHeader("Proxy-Client-IP");          fromSource = "Proxy-Client-IP";      }      if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {          ip = request.getHeader("WL-Proxy-Client-IP");          fromSource = "WL-Proxy-Client-IP";      }      if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {          ip = request.getRemoteAddr();          fromSource = "request.getRemoteAddr";      }      appLog.info("App Client IP: "+ip+", fromSource: "+fromSource);      return ip;  }  

这样就不会一直获取的是服务器的Ip了。