nginx后的tomcat获取真实用户ip

目前大部分获取ip的方式:beat.getRequest().getRemoteAddr()
但是,如果通过nginx反向代理的话,就获取不到真实ip,是获取的nginx的ip




需要:添加    proxy_set_header  X-Real-IP  $remote_addr; 

 

[html]  view plain copy
 
  1. server {  
  2.      listen       80;  
  3.      server_name  price.kuche.com;  
  4.      location / {  
  5.          root   html;  
  6.     proxy_set_header  X-Real-IP  $remote_addr;  
  7.          proxy_pass http://price.kuche.com:8053;  
  8.       }  
  9. }  



添加一个表头声明


然后这样取


[java]  view plain copy
 
    1. public static String getRemoteAddrIp(HttpServletRequest request) {  
    2.     String ipFromNginx = getHeader(request, "X-Real-IP");  
    3.     System.out.println("ipFromNginx:" + ipFromNginx);  
    4.     System.out.println("getRemoteAddr:" + request.getRemoteAddr());  
    5.     return StringUtil.isEmpty(ipFromNginx) ? request.getRemoteAddr() : ipFromNginx;  
    6. }  
    7.   
    8.   
    9. private static String getHeader(HttpServletRequest request, String headName) {  
    10.     String value = request.getHeader(headName);  
    11.     return !StringUtils.isBlank(value) && !"unknown".equalsIgnoreCase(value) ? value : "";  
    12. }  

你可能感兴趣的:(tomcat)