본문 바로가기
기억 할 것들

X-Forwarded_FOR(XFF)

by jay-choe 2021. 9. 13.

우선, 로드벨런서가 앞단에 붙은 상태에서, 스프링 부트 서버에서, 사용자의 ip를 기록하고 싶었고, 이를 로그를 통해서 나타내고 싶었습니다.

 

그래서 간단하게 Logback에서 제공하는 MDC를 이용해서, 이 안에 사용자가 보내는 Request에서 getRemoteAddress()를 호출해서 ip를 꺼내서 넣으면 될 줄 알았습니다.

 

하지만, 로그를 남겨보니, 계속 같은 ip주소를 리턴을 했습니다.

 

로그를 남길 때, 다른 헤더들도 같이 남기게 했었는데, 요청하는 곳의 아이피는 X-Forwarded-For 이라는 해더에 담겨져서 오는 것 같아서 해당 내용을 찾아보았습니다.

 

https://88240.tistory.com/526

 

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
쉘에서 유저 변경하기  (0) 2021.07.31