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




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

 

[html] view plaincopy
 
  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 plaincopy
 
    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. }  
posted on 2015-03-27 15:09  一个人的天空@  阅读(788)  评论(0编辑  收藏  举报