갑자기 기억 나서 적는다
은행 근무 당시 결합테스트 진행 중이던 OPENAPI 신규 연계처로부터 에러 문의가 왔다.
이미 다른 연계처들이 잘 사용하고 있는, 운영중인 계좌 조회 api 서비스였는데, 유독 이 업체만 계좌 조회 api 요청 시 500 에러 응답을 받는다는 것이었다.
요청을 보내던 해당 연계처의 request header에 Host 헤더가 빠져있던것이 원인이다.
OCP나 쿠버네티스 내부로 리퀘스트 트래픽이 유입되었을때, 각각 리퀘스트 헤더의 Host 헤더값에 해당되는 버츄얼 호스트 정보를 바탕으로 어떤 네임스페이스(project)의 라우트 객체가 커버하게 될 지 식별하는데, 이놈의 연게처가 보내는 api 리퀘스트에는 호스트 헤더가 없기 때문에 OCP가 자체적으로 503에러를 응답하고 있던 것이다.
요청 목적지 IP, port와 매핑되는 가상 호스트 도메인을 기재하는 헤더로 필수로 설정되어 있어야 정상 동작이 된다.
가만히 생각해보면, 단순 브라우저 주소창에 URL을 넣는 것부터 시작하여 포스트맨까지 상당히 많은 HTTP 요청들이 내가 입력한 URL로 부터 도메인을 가져와 Host 헤더로 자동 설정해주고 있었다
실제 HTTP 리퀘스트 메세지 포맷을 보면 헤더 라인에 Host 값이 가장 먼저 위치하고 있는데, 너무 자연스럽게 잊고 있었다.
---------------------------------------------------------------------------
GET /accounts HTTP/1.1\r\n
Host : jpapi.shinhan.com \r\n <-- Host Header
Connection : keep-alive\r\n
Headers ...
---------------------------------------------------------------------------