/var/log/nginx/error.log 를 보면, 아래와 같이 클라이언트IP가 로컬 IP로 표시되서 인바운드되는 IP를 추적할 수 없는 경우가 있다. 이런 경우 동일IP에서 계속해서 로그인 시도를 하는 경우를 판단하기 어렵게 되기 때문에 클라이언트IP는 제대로 표시되도록 하는 것이 좋다.
while reading response header from upstream, client: 127.0.0.1, server
실제로 이 요청이 들어온 클라이언트의 IP를 표시하려면 Nginx의 설정에서 다음과 같이 설정해야 합니다:
- Real IP 모듈 설정: Nginx에서 클라이언트의 실제 IP 주소를 로깅하기 위해서는
ngx_http_realip_module
을 사용해야 합니다. 이 모듈은 클라이언트 IP를 실제 요청을 보낸 클라이언트의 IP로 변경할 수 있도록 해줍니다. - 설정 파일 변경: Nginx의 설정 파일(
/etc/nginx/nginx.conf
또는/etc/nginx/sites-available/default
등)에서 다음과 같이 설정합니다.
http {
# real_ip module settings
set_real_ip_from 127.0.0.1;
# 로컬 네트워크나 로드 밸런서의 IP를 설정
real_ip_header X-Forwarded-For;
# 실제 IP 주소를 담고 있는 헤더를 설정 (예: X-Forwarded-For)
# …
server {
# …
location / {
# …
}
}
}
위 설정에서set_real_ip_from
은 실제 IP를 전달하는 네트워크나 장치의 IP 주소를 설정합니다.real_ip_header
는 클라이언트의 실제 IP 주소를 포함하고 있는 헤더를 지정합니다. 일반적으로 로드 밸런서를 통해 들어오는 요청의 경우X-Forwarded-For
헤더를 사용합니다. - Nginx 재시작: 설정 파일을 변경한 후에는 Nginx를 재시작하여 변경 사항을 적용합니다.
sudo systemctl restart nginx
이렇게 설정한 후에는 로그에서 클라이언트의 실제 IP 주소가 제대로 표시될 것입니다.
