반응형
Java 요청 IP 확인 방법
HttpServletRequest객체에서 IP주소 받아오기
요청한 클라이언트의 IP주소는 HttpServletRequst 객체를 통해 받아올 수 있다.
protected String getClientIpAddr(HttpServletRequest req) {
String ip = req.getHeader("X-Forwarded-For");
log.info(">>>> X-FORWARDED-FOR : " + ip);
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("Proxy-Client-IP");
log.info(">>>> Proxy-Client-IP : " + ip);
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("WL-Proxy-Client-IP");
log.info(">>>> WL-Proxy-Client-IP : " + ip);
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("HTTP_CLIENT_IP");
log.info(">>>> HTTP_CLIENT_IP : " + ip);
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("HTTP_X_FORWARDED_FOR");
log.info(">>>> HTTP_X_FORWARDED_FOR : " + ip);
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getRemoteAddr();
}
log.info(">>>> Result : IP Address : "+ip);
return ip;
}
참고문서
Proxy(프락시) 환경에서 client IP 를 얻기 위한 X-Forwarded-For(XFF) http header
XFF 는 HTTP Header 중 하나로 HTTP Server 에 요청한 clinet 의 IP 를 식별하기 위한 사실상의 표준이다. 웹 서버나 WAS 앞에 L4 같은 Load balancers 나 Proxy server( HAProxy), caching server( Varnish), HTTP 서버용 WAS Connector(웹로직 커넥터 - mod_wl, 톰캣 커넥터 - mod_jk 등) 등이 있을 경우 이런 제품들은 웹서버/WAS 에 HTTP 나 전용 프로토콜(AJP)로 요청을 보낸후에 받은 결과를 가공하여 클라이언트에 재전송하게 된다.
Intellij에서 Ipv4 출력 설정
위 방법으로 print또는 log를 찍게 된다면 ipv6형식의 ip가 출력된다.
intellij기준 ipv4형식으로 출력을 원한다면 다음과 같이 설정한다.
- 설정 코드 추가
-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true
- 재실행
반응형
'ETC > 개발환경 설정' 카테고리의 다른 글
[Ubuntu]Swap메모리 설정하기 (0) | 2022.04.22 |
---|---|
[cors-anywhere] 나만의 프록시 서버를 만들어보자 (0) | 2022.04.13 |
intellij properties 한글 깨짐 (0) | 2022.03.09 |
Hosts를 통한 IP접속 경로 수정 (0) | 2021.07.23 |
이클립스 eclipse .js 파일 흑백으로 나올 때 (0) | 2021.05.22 |
[centos] 현재 시간 설정 한국시간으로 변경하기 (3) | 2021.04.25 |