Linux Nginx 真實IP地址獲取(三)
阿新 • • 發佈:2019-01-26
由於使用了nginx反向代理,所在使用普通的ip獲取方式,獲取到的ip很可能是nginx的ip地址,所以為了解決這個問題,在Linux Nginx 配置(二)中,我已經進行了真實IP的配置,接下來,我們在程式碼中使用以下程式碼即可
public static String getIpAddr(HttpServletRequest request) { String unknown = "unknown"; String ip = request.getHeader("X-real-ip");// 先從nginx自定義配置獲取 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.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("HTTP_CLIENT_IP"); } if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; }