728x90
개인적으로 소규모 운영중인 서비스에 방문기록을 남기는 작업을 진행해보았다.
그 중, Ip 정보를 수집을 해야 했는데 구글링 조금 해보면 아래와 같은 코드를 확인할 수가 있다.
public static String getRemoteIp(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (ip == null) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null) {
ip = request.getRemoteAddr();
}
return ip;
}
헌데, 실제 서비스에 올리고 수집된 데이터를 보니 전부 '127.0.0.1' 로 저장되는 것이 아닌가...
원인을 찾다보니, Api 요청이 오면 제일 앞단 nginx 에서 받아 reverse proxy 를 해주는 과정에서 ip 정보가 누락되는 현상이었다.
아래와 같이 nginx conf 파일에 $remote_addr 를 추가함으로써 정상적으로 IP 를 수집할 수 있게 되었다.
728x90