상세 컨텐츠

본문 제목

[Spring] Client Ip 가져오기

Development/Spring

by J-Developer 2020. 4. 6. 13:28

본문

반응형

프로젝트를 진행하다보면 Client의 IP를 가져와야하는 경우가 있습니다.

보통 Spring의 controller에서 request.getRemoteAddr();를 이용하여 IP를 가져오는데 해당 메서드의 문제는 WAS서버 앞에 다른서버가 존재할때 (프록시 서버, 로드밸런싱 서버 등) request.getRemoteAddr();를 이용하면 Client IP가 아닌 WAS 앞의 서버의 IP를 가져옵니다.

이러한 경우 Client의 IP는 Header에 남겨둔다고 하여 Header를 이용해서 IP를 가져와야 합니다.

 

public static String etRemoteAddr(HttpServletRequest request) {

        String ip = null;

        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.getHeader("X-Real-IP"); 

        }

        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 

            ip = request.getHeader("X-RealIP"); 

        }

        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 

            ip = request.getHeader("REMOTE_ADDR");

        }

        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 

            ip = request.getRemoteAddr(); 

        }

		return ip;

}

 

이러한 방법을 Client IP를 가져올 수 있습니다.

 

더 자세한 정보는 하단의 링크에서 확인 하실 수 있습니다.

https://www.lesstif.com/pages/viewpage.action?pageId=20775886

반응형

관련글 더보기

댓글 영역