Proxy Protocol이란?
Proxy Protocol은 TCP(또는 UDP) 기반 연결에서 중간 프록시 장비가 프록시 이전의 실제 클라이언트 IP 및 PORT정보를 최종 목적지 서버로 전달하기 위해 사용되는 프로토콜입니다.
Proxy Protocol은 TCP Header가 아닌 TCP Payload의 시작 부분에 클라이언트 정보가 포함되도록 정의된 프로토콜입니다.
## Protocol은 구문, 의미, 타이밍이 맞아야 함.
## 따라서 보내는 쪽에서도 Proxy Protocol이 세팅이 돼 있어야 하며, 받는 쪽에서도 Proxy Protocol 관련 설정이 돼 있어야 함.
최종적으로 정리하자면
Proxy Protocol은 TCP 헤더를 변경하지 않으며, TCP 연결 이후 TCP payload의 첫 데이터에 별도의 헤더를 삽입합니다.
해당 헤더는 커널이 아닌 애플리케이션에서 해석해야 하며, 프록시 장비뿐 아니라 서버 측에서도 Proxy Protocol을 지원해야 합니다.
Proxy Protocol은 TCP 연결이 설정된 이후, HTTP 요청(GET / HTTP/1.1)보다 앞선 TCP payload의 시작 지점에 포함됩니다.
v1은 payload의 첫 바이트부터 ‘PROXY ’ 문자열로 시작하며, v2는 payload의 첫 12바이트에 고정된 시그니처를 포함합니다.

Proxy Protocol 사용하는 이유
Proxy Protocol은 프록시나 로드밸런서를 거치는 환경에서도, 최종 서버가 실제 클라이언트의 IP 주소와 포트 정보를 정확히 인식할 수 있도록 하기 위해 사용됩니다.
## L7단에서는 X-forwarded-for 사용
Proxy Protocol V1과 V2차이
Proxy Protocol에는 V1과 V2가 있으며 각 각의 장단점이 있습니다.
Version 1
장점
- 텍스트 기반(ASCII) 으로 사람이 바로 읽을 수 있음
- 구현이 단순하여 호환성이 매우 높음
단점
- 확장 정보(TLV 등)를 담을 수 없음
Version 2
장점
- TLV 구조를 통해 추가 정보(SSL, SNI 등) 전달 가능
- 바이너리 기반으로 파싱 성능이 우수함
단점
- 사람이 직접 읽기 어려워 디버깅이 까다로움
Proxy Protocol 프록시 장비 설정(F5 기준)
iRule만 사용, 공식사이트에서 확인 가능하며 V1, V2 두 개 모두 확인 가능
Proxy Protocol 서버 설정(Nginx 기준)
https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/

## Nginx의 경우 V1, V2를 알아서 호환하기에 위 설정만 진행해도 V1, V2 모두 사용할 수 있습니다.
'네트워크' 카테고리의 다른 글
| [스위치 동작 방식] Frame Forward 방식(스위치 동작 방식) (1) | 2025.05.28 |
|---|---|
| 상태 코드 - 304 Not Modified (0) | 2025.05.27 |
| HTTP 버전 프로토콜에 따른 기능 차이 (0) | 2023.10.25 |
| "이 사이트 보안 인증서에 대한 해지 정보를 사용할 수 없습니다" 해결방법 (0) | 2023.03.03 |
| HTTP Version (0) | 2022.08.29 |