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)