/**
* 获取ip地址
*
* @param request
* @return
*/
public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Real-IP");// 取通过nginx等软件进行反向代理之后的真实ip
if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip))
ip = request.getHeader("X-Forwarded-For");
if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip))
ip = request.getHeader("Proxy-Client-IP");
if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip))
ip = request.getHeader("WL-Proxy-Client-IP");
if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip))
ip = request.getHeader("HTTP_CLIENT_IP");
if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip))
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip))
ip = request.getRemoteAddr();
if (StringUtils.isNotBlank(ip) && !"unknown".equalsIgnoreCase(ip))// 多次反向代理后会有多个ip,用逗号分割,第一个为真实值
{
int i = ip.indexOf(",");
if (i != -1)
ip = ip.substring(0, i);
}
return ip;
}