通過下面的代碼獲取不到ip的話,就得看看服務器的配置了。
梳理網絡請求的流程,排查ip在哪丟失的,爲什麼沒有在網關獲取到這個客戶端ip。有可能是雲服務器管理廠商沒有放開獲取客戶端ip
public String getIP(HttpServletRequest request) { log.error("X-Real-IP---" + request.getHeader("X-Real-IP")); log.error("X-Requested-For---" + request.getHeader("X-Requested-For")); log.error("x-forwarded-for---" + request.getHeader("x-forwarded-for")); log.error("X-Forwarded-For---" + request.getHeader("X-Forwarded-For")); log.error("Proxy-Client-IP--" + request.getHeader("Proxy-Client-IP")); log.error("WL-Proxy-Client-IP---" + request.getHeader("WL-Proxy-Client-IP")); log.error("HTTP_CLIENT_IP---" + request.getHeader("HTTP_CLIENT_IP")); log.error("HTTP_X_FORWARDED_FOR----" + request.getHeader("HTTP_X_FORWARDED_FOR")); log.error("request.getRemoteAddr()----" + request.getRemoteAddr()); String ip = request.getHeader("x-forwarded-for"); if (StringUtils.isEmpty(ip) || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("X-Forwarded-For"); } if (StringUtils.isEmpty(ip) || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (StringUtils.isEmpty(ip) || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (StringUtils.isEmpty(ip) || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("X-Real-IP"); } if (StringUtils.isEmpty(ip) || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (StringUtils.isEmpty(ip) || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return StringUtils.isEmpty(ip) ? null : ip.split(",")[0]; }