ViaVia는 요청·응답이 원 발신자와 최종 수신자 사이를 지나며 거친 프록시·게이트웨이를 순서대로 기록하는 헤더입니다. 각 중간 노드가 자신을 이 목록에 추가합니다.
각 항목은 `프로토콜버전 수신자식별자 [주석]` 형태이며(예: `1.1 varnish`), 여러 홉을 거치면 쉼표로 이어져 경로 이력이 됩니다.
값은 각 중간자가 처리한 프로토콜 버전(예: `1.1`, `HTTP/1.1`)과 자신을 식별하는 이름(호스트·의사명·`varnish`·`vegur` 같은 별칭)으로 구성됩니다. 요청 경로에서는 클라이언트→서버 방향의 프록시들이, 응답 경로에서는 서버→클라이언트 방향의 캐시·게이트웨이들이 자신을 덧붙이므로 요청·응답 모두에 나타납니다.
핵심 용도는 두 가지입니다. 첫째, 디버깅·추적 — 요청이 어떤 CDN·캐시·게이트웨이를 통과했는지 파악해 지연·캐싱 문제를 진단합니다. 둘째, 루프 감지 — 프록시는 Via에 이미 자기 식별자가 있으면 무한 전달 루프를 인지하고 끊을 수 있습니다.
Via는 '어떤 노드를 거쳤는가'(중간 소프트웨어 경로)를 기록하는 반면, X-Forwarded-For·Forwarded는 '원 클라이언트가 누구인가'(발신자 주소)를 전달합니다. 역할이 겹치지 않으므로 함께 쓰입니다. 또한 각 홉의 이름·버전이 노출되므로, 내부 인프라 정보 누출을 꺼린다면 게이트웨이에서 Via를 축약·제거하기도 합니다.
Via: [<protocol-name>/]<protocol-version> <host>[:<port>] [<comment>]e.g. Via: 1.1 vegur, 1.1 varnish