X-Forwarded-Proto
요청 헤더 Routing

개요

X-Forwarded-Proto(XFP)는 클라이언트가 프록시에 접속할 때 사용한 원래 스킴(`http` 또는 `https`)을 백엔드에 전달하는 사실상 표준 헤더입니다. Forwarded 표준의 `proto` 파라미터에 대응합니다.

TLS 종단(TLS termination)이 프록시·로드밸런서에서 이뤄지는 흔한 구성에서, 백엔드로 가는 내부 연결은 평문 HTTP지만 실제 사용자 연결은 HTTPS였음을 이 헤더가 알려줍니다.

자세히

CDN·로드밸런서가 HTTPS를 처리하고 백엔드와는 HTTP로 통신하면, 백엔드 입장에서는 요청이 `http`로 보입니다. 이때 애플리케이션이 스스로 리다이렉트·쿠키 Secure 플래그·정본 URL을 결정하려면 원 스킴이 필요하며, XFP가 이를 채워줍니다. 값이 `https`면 HTTPS로 접속되었다는 뜻입니다.

설정을 그르치면 무한 리다이렉트가 대표적으로 발생합니다. 백엔드가 'HTTP면 HTTPS로 리다이렉트' 규칙을 두었는데 XFP를 보지 않으면, 이미 HTTPS인 요청을 계속 `http`로 오인해 리다이렉트 루프에 빠집니다. 프레임워크의 'HTTPS 인식' 설정에 XFP를 반드시 반영해야 합니다.

이 값 역시 위조 가능하므로 신뢰 경계 밖의 XFP를 그대로 믿으면 안 됩니다. 공격자가 `X-Forwarded-Proto: https`를 위조해 보안 검사(예: 'HTTPS에서만 쿠키 발급')를 우회할 수 있으니, 신뢰 프록시가 붙인 값만 사용하도록 하고 최외곽에서 외부 유입 XFP를 재설정하세요. HSTS·Secure 쿠키 판단이 이 값에 의존한다면 특히 주의가 필요합니다.

문법

X-Forwarded-Proto: <scheme>

e.g. X-Forwarded-Proto: https

실무 참고

관련 헤더

스펙 근거