package com.xcong.excoin.common.utils; 
 | 
  
 | 
import javax.servlet.http.HttpServletRequest; 
 | 
  
 | 
/** 
 | 
 * @author MrBird 
 | 
 */ 
 | 
public class IpUtil { 
 | 
  
 | 
    private static final String UNKNOWN = "unknown"; 
 | 
  
 | 
    /** 
 | 
     * 获取 IP地址 
 | 
     * 使用 Nginx等反向代理软件, 则不能通过 request.getRemoteAddr()获取 IP地址 
 | 
     * 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址, 
 | 
     * X-Forwarded-For中第一个非 unknown的有效IP字符串,则为真实IP地址 
 | 
     */ 
 | 
    public static String getIpAddr(HttpServletRequest request) { 
 | 
        String ip = request.getHeader("x-forwarded-for"); 
 | 
        if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { 
 | 
            ip = request.getHeader("Proxy-Client-IP"); 
 | 
        } 
 | 
        if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { 
 | 
            ip = request.getHeader("WL-Proxy-Client-IP"); 
 | 
        } 
 | 
        if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { 
 | 
            ip = request.getRemoteAddr(); 
 | 
        } 
 | 
        return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip; 
 | 
    } 
 | 
  
 | 
} 
 |