일반적으로 JAVA에서 ClientIP를 가져오려면 request.getRemoteAddr();를 사용하게 되는데,


웹로직 환경에서는 IP를 가져올 수 없었다, WebServer, WAS, L4, proxy 종류에 상관없이 client IP 를 잘 가져오기를 바란다면 다음과 같은 순서로 IP 를 얻어내야 한다.

 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.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(); 
 }

이상입니다.


by 아카마메 2018. 3. 9. 16:32