/**
* Client IP 반환.
* @param request
* @return
*/
public String getClientIp(HttpServletRequest request) {
String clientIp = request.getHeader("Proxy-Client-IP");
if (clientIp == null) {
clientIp = request.getHeader("WL-Proxy-Client-IP");
if (clientIp == null) {
clientIp = request.getHeader("X-Forwarded-For");
if (clientIp == null) {
clientIp = request.getRemoteAddr();
}
}
}
return clientIp;
}
------------------------------------------------------------------------------------------
웹서버와 Plug-in 으로 구성되어 있는 환경에서는
웹로직의 "Server"와 "Cluster" 설정에서 "WebLogic Plug-in Enabled"를
"true"로 설정하여 웹로직에서 Client IP 를 구할때 request.getRemoteAddr() 을 사용합니다.
고객의 업무에 따라서는 Client IP 와 웹서버의 IP 모두를 필요로 하는 경우도 있습니다.
물론 웹서버가 두개 이상의 구성을 보일경우 입니다.
이 경우에는 "WebLogic Plug-in Enabled" 를 "true"로 설정해서는 웹서버의 IP 를 구하기 힘듭니다.
(제 경우에는 구하질 못했습니다.) 설정을 "false"로 합니다.
그리고 request.getRemoteAddr() 을 사용하여 웹서버의 IP 를 구합니다.
문제는 Client IP 인데 request.getHeaer(파라메터)를 이용하여 구할수 있습니다.
Client IP 를 구할수 있는 파라메터에는 아래의 3가지가 있습니다.
request.getHeaer("WL-Proxy-Client-IP")
request.getHeaer("Proxy-Client-IP")
request.getHeaer("X-Forwarded-For")
결론적으로 웹로직에서 "WebLogic Plug-in Enabled"를 "true"로 설정하는 것도
request 의 Header 값을 강제로 바꾸어 주는 것입니다.
물론 getRemoteAddr 이 Client IP 를 얻기 위한 메소드 이지만,
웹서버와 Plug-in 을 사용하는 환경에서 웹서버 와 클라이언트의
IP 정보를 모두 필요로 할 경우에는 위의 방법도 고려해 보시기 바랍니다.
'Programming > JAVA' 카테고리의 다른 글
[java] 글자 byte 확인 (0) | 2018.05.21 |
---|---|
HashMap 값을 Oracle Number에 넘길 때 나오는 에러처리방법. (0) | 2015.09.03 |
java poi 엑셀 하이퍼링크 (0) | 2015.08.11 |
이클립스 설치 하기. (0) | 2013.07.29 |
JDK 설치 후, 자바 환경변수 설정하기. (0) | 2013.07.29 |