MINGKYME 블로그

X-Forwarded-For Header 사용법

CDN을 이용하면, X-Forwarded-For 라는 헤더를 볼 수 있다.

해당 헤더는 서버들의 발자취를 볼 수 있다.

정확하게는 서버들에 접속한 Client 를 나타낸다.

nginx을 이용해서 설정한다면 다음과 같다.

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

적용 완료 후, Origin 접속 시, Header를 통해 서버들의 발 자취가 나온다.

Clinet(1.1.1.1) -> Edge(2.2.2.2) -> Relay(3.3.3.3) -> Origin(4.4.4.4)
X-Forwarded-For: 1.1.1.1, 2.2.2.2, 3.3.3.3

헤더를 이용해서 Client IP를 찾을 수 있다.

근데 이 값이 X-Forwarded-For[0] 가 진짜 Client IP가 확실할까?

정답을 말하자면 확실하다고 말하기 어렵다.

이유는?

반례를 보자.

curl "http://URL"
-H X-Forwarded-For "0.0.0.0"

이렇게 된다면, Edge 서버는 본인이 Relay 서버인줄 알고 값을 추가할 것이다.

그럼 어떻게 처리해야할까?

CDN IP 대역을 이용해서 뒤에서부터 삭제해야한다.

그리고 난 뒤, 마지막 IP가 Client IP 인 것이다.

실제로 AWS에서도 CDN IP 대역을 공개한다. (CloudFront)

https://aws.amazon.com/ko/blogs/korea/aws-ip-ranges-json/