프로그래밍/웹, 네트워크

X-Forwarded-For(XFF) 헤더란?

Hwan2 2023. 5. 1. 21:07
반응형

 

 

 

 

https://www.keycdn.com/support/x-forwarded-for

 

X-Forwarded-For(XFF) 헤더는 HTTP 요청 헤더 중 하나로, 클라이언트의 IP 주소를 식별하는 데 사용됩니다.

주로 프록시 서버나 로드 밸런서를 사용할 때 클라이언트의 원래 IP 주소를 전달하기 위해 사용됩니다.

 

프록시 서버나 로드 밸런서를 거친 경우, 웹 서버는 클라이언트의 실제 IP 주소가 아닌 프록시 서버나 로드 밸런서의 IP 주소를 받게 됩니다.

X-Forwarded-For 헤더는 이러한 문제를 해결하기 위해 사용되며,

프록시 서버나 로드 밸런서가 이 헤더를 추가하고 클라이언트의 원래 IP 주소를 전달합니다.

 

웹 서버는 X-Forwarded-For 헤더 값을 사용하여 클라이언트의 실제 IP 주소를 얻을 수 있습니다.

예를 들어, X-Forwarded-For 헤더는 다음과 같이 표시될 수 있습니다.

 

X-Forwarded-For: client_ip, proxy1_ip, proxy2_ip

 

이 헤더는 클라이언트의 IP 주소(client_ip)와 요청이 거친 프록시 서버의 IP 주소(proxy1_ip, proxy2_ip)를 포함하고 있습니다.

AWS에서는 Elastic Load Balancer 같은 로드 밸런싱 서비스를 사용할 때,

X-Forwarded-For 헤더를 사용하여 클라이언트의 원래 IP 주소를 전달할 있습니다.

 

그러면 백엔드 서버는 헤더를 사용하여 클라이언트의 실제 IP 주소를 확인할 있습니다.

 

테스트 코드는 다음과 같습니다.

 

- 설치

$ pip install Flask

 

- Python Code

from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def index():
    xff = request.headers.get('X-Forwarded-For')
    if xff:
        ip = xff.split(',')[0]

    return f"Client IP Address: {ip}"

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8080)

 

- 결과

 

반응형