요청 헤더 (Request headers)
Fly.io가 앱에 전달하는 다양한 요청 헤더를 정리한 가이드예요. 클라이언트 IP, 리전, 원본 포트와 프로토콜 같은 정보를 담고 있으며, HTTP 핸들러 서비스가 이 헤더들을 추가해요.
출처: 문서
본문
요청 헤더는 수신 요청과 그 요청이 애플리케이션까지 도달한 경로에 특정된 정보를 담아요. 요청 헤더는 HTTP 핸들러 서비스가 추가해요.
요청 헤더 (Request Headers)
Fly-Client-IP
클라이언트 IP 주소: Fly Proxy 관점에서 본 클라이언트의 IP 주소예요. Fly.io 플랫폼 앞에 다른 리버스 프록시 서비스를 사용한다면, 이 헤더는 요청을 보낸 클라이언트가 아니라 프록시 서비스의 IP 주소로 설정돼요. 그 경우에는 X-Forwarded-For 헤더에서 IP 주소를 파싱해 클라이언트 IP 주소를 찾아야 해요.
Fly-Forwarded-Port
원본 연결 포트: 이 헤더는 Fly Proxy가 항상 설정하며, 클라이언트가 Fly 에지 노드에 연결한 실제 포트를 나타내고, 이 포트가 애플리케이션 인스턴스로 포워딩돼요.
Fly-Region
에지 노드 리전: 이 헤더는 연결이 수락되고 라우팅된 리전을 나타내는 세 글자 리전 코드예요.
애플리케이션이 실행 중인 곳을 나타내는 환경 변수 FLY_REGION과 혼동하지 마세요.
X-Forwarded-For
클라이언트와 프록시 목록: 요청을 시작한 클라이언트의 주소와 요청이 통과한 프록시 서버의 주소를 포함한 IP 주소의 쉼표로 구분된 목록이에요. 예를 들어 "77.97.0.98, 77.83.142.33"은 클라이언트와 통과한 프록시 하나를 포함해요. Fly.io 플랫폼에서 이 목록의 마지막(가장 오른쪽) 주소는 앱에 할당된 공유 또는 전용 IP 주소가 돼요.
이 헤더는 스푸핑 시도를 피하기 위해 주의해서 다뤄야 해요. X-Forwarded-For에 대한 MDN 문서의 지침을 따라 헤더를 안전하게 파싱하는 법을 배워 보세요. Fly.io 플랫폼 앞에 다른 리버스 프록시를 사용하지 않는다면, 클라이언트 IP 주소를 얻는 데는 Fly-Client-IP 헤더가 더 나은 선택일 수 있어요.
X-Forwarded-Proto
원본 클라이언트 프로토콜: 클라이언트가 요청에 사용한 프로토콜이에요. http 또는 https 중 하나예요.
X-Forwarded-Port
원본 연결 포트: 이 헤더는 클라이언트가 설정할 수 있으며, 클라이언트가 연결하려고 했던 포트를 나타내야 해요.
X-Forwarded-SSL
SSL 상태: 클라이언트가 SSL을 통해 연결했는지 여부를 나타내요. 값은 on 또는 off일 수 있어요.
요청/응답 헤더 (Request and Response Headers)
Via
프록시 경로: 프록시가 추가하는 이 헤더는 연결이 거쳐 간 경로와 사용된 프로토콜을 보여줘요. MDN에 이 헤더에 대한 전체 문서가 있어요. 예를 들어 Fly 에지를 통한 연결은 필드에 2 fly.io를 표시할 수 있는데, 이는 연결이 Fly Proxy를 통과하면서 HTTP 2버전을 사용했다는 뜻이에요.