우선, 로드벨런서가 앞단에 붙은 상태에서, 스프링 부트 서버에서, 사용자의 ip를 기록하고 싶었고, 이를 로그를 통해서 나타내고 싶었습니다.
그래서 간단하게 Logback에서 제공하는 MDC를 이용해서, 이 안에 사용자가 보내는 Request에서 getRemoteAddress()를 호출해서 ip를 꺼내서 넣으면 될 줄 알았습니다.
하지만, 로그를 남겨보니, 계속 같은 ip주소를 리턴을 했습니다.
로그를 남길 때, 다른 헤더들도 같이 남기게 했었는데, 요청하는 곳의 아이피는 X-Forwarded-For 이라는 해더에 담겨져서 오는 것 같아서 해당 내용을 찾아보았습니다.
X-Forwarded-For(XFF) 란?
XFF는 HTTP Header 중 하나로 HTTP Server에 요청한 Client의 IP를 식별하기 위한 표준이다. (XFF 헤더는 HTTP 프록시나 로드 밸런서를 통해 웹 서버에 접속하는 클라이언트의 원 IP 주소를 식별하는 사실상의
88240.tistory.com
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/X-Forwarded-For
X-Forwarded-For - HTTP | MDN
X-Forwarded-For (XFF) 헤더는 HTTP 프록시나 로드 밸런서를 통해 웹 서버에 접속하는 클라이언트의 원 IP 주소를 식별하는 사실상의 표준 헤더다. 클라이언트와 서버 중간에서 트래픽이 프록시나 로드
developer.mozilla.org
해당 글을 통해서 XFF해더에 대해서 완벽하게 이해가 되었으며, 기존에 getRemoteAddress()함수가 웹서버 내부에서 왜 같은 아이피를 출력하는지도 알게되었습니다.(로드벨런서의 아이피..)
이제 앞에 로드벨런서가 있다면, X-Forwarded-For라는 해더의 내용 혹은 HTTP Forwarded 해더를 파싱해서 아이피를 가져와야 된다는 것을 알게 되었습니다!
'기억 할 것들' 카테고리의 다른 글
301 vs 302 redirect (0) | 2022.02.19 |
---|---|
Jpa 영속성전이(Cascade) 및 고아 객체 (0) | 2021.09.26 |