레이블이 remote Address인 게시물을 표시합니다. 모든 게시물 표시
레이블이 remote Address인 게시물을 표시합니다. 모든 게시물 표시

2014년 1월 9일 목요일

[JSP] 접속된 클라이언트의 아이피 확인하는 방법

접속하는 클라이언트의 아이피를 확인 하려면 HttpServletRequest 객체에서 가져와서 확인하면 된다. 

request.getRemoteAddr() ;


그러나 프록시나 Load Balancer 같은것을 겨쳐 오게 되는 경우 위의 방법으로는 정확한 아이피를 가져 오지 못하게 된다. 


그래서 다음과 같이 메소드를 구현해서 사용 하는 것이 편리하다. 



public String getClientIP(HttpServletRequest request) {

    String ip = request.getHeader("X-FORWARDED-FOR"); 
   
    if (ip == null || ip.length() == 0) {
        ip = request.getHeader("Proxy-Client-IP");
    }

    if (ip == null || ip.length() == 0) {
        ip = request.getHeader("WL-Proxy-Client-IP");  // 웹로직
    }

    if (ip == null || ip.length() == 0) {
        ip = request.getRemoteAddr() ;
    }
   
    return ip;

}



** localhost에서 테스트 하는 경우 0:0:0:0:0:0:0:1 값으로 넘어 오는 경우가 있다.

이 값은 IPv6 에서 IPv4의 127.0.0.1 과 같은 값이다.
Tomcat으로  개발시 이게 문제가 되는 경우 vm arguments에  -Djava.net.preferIPv4Stack=true 값을 넣어 주면 된다.