如果后端程序使用了多层nginx做负载
public static String getIp() {
try {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String 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.getHeader(“X-Real-IP”);
}
if (ip == null || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)) {
ip = request.getHeader(“x-forwarded-for”);
}
if (ip == null || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
if (StringUtils.isBlank(ip)){
ip = “127.0.0.1”;
}
return org.apache.commons.lang3.StringUtils.trim(org.apache.commons.lang3.StringUtils.substringBefore(ip, “,”));
} catch (Exception ex) {
return “”;
}
}
请使用这个去获取IP ,记录下解决获取ip失真的情况