조회수: 116

421 Misdirected Request 체크리스트

421 Misdirected Request를 3단계로 진단: HTTP/2 연결 재사용인지 오리진 SNI·인증서 불일치인지 가립니다. 무료 즉시 진단으로 바로 확인.

내 도메인에 이 문제가 있는지 지금 확인

무료, 가입 불필요. 이 가이드가 다루는 항목을 바로 검사하고 조치 방법을 알려드립니다.

Problem

요청에 대한 최종 응답 코드가 421 Misdirected Request이며, 보통 “The client needs a new connection for this request as the requested host name does not match the Server Name Indication (SNI) in use for this connection” 같은 메시지가 함께 뜹니다.

Symptoms

  • HTTP Check에서 최종 코드가 421입니다.
  • 간헐적입니다 — 같은 URL이 새로고침하면 되거나, 한 브라우저에서는 되고 다른 브라우저에서는 안 됩니다.
  • HTTP/2(또는 HTTP/3)에서만 나타납니다. HTTP/1.1로 강제하면 사라집니다.
  • 여러 호스트명이 하나의 IP와 하나의 인증서를 공유하는 사이트에서 걸립니다.

421이 실제로 뜻하는 것

RFC 9110(§15.5.20)은 421을 “대상 URI에 대해 권한 있는 응답을 만들 수 없거나 만들 의사가 없는 서버로 요청이 향한 것”으로 정의합니다. 오리진 서버는 자신이 설정되지 않은 호스트, 또는 요청이 도착한 연결 컨텍스트와 맞지 않는 대상 URI를 거부할 때 이 코드를 보냅니다.

흥미로운 조항은 재시도 규칙입니다. 421을 받은 클라이언트는 요청을 다른 연결로 재시도할 수 있으며(MAY), 특이하게도 “요청 메서드가 멱등이든 아니든” 그렇게 할 수 있습니다. 보통 브라우저는 POST를 조용히 재시도하지 않습니다 — 서버가 이미 처리했을 수 있으니까요. 421은 “이 요청은 권한 있는 서버에 애초에 도달하지 못했으니 새 연결로 재시도해도 안전하다”고 명시적으로 말하는 유일한 상태 코드입니다.

이 한 조항이 전부를 설명합니다. 421은 요청이 잘못됐다는 뜻이 아닙니다. 잘못된 파이프로 도착했다는 뜻입니다.

Top 3 Causes

  1. HTTP/2 연결 병합(connection coalescing) - 가장 흔한 원인입니다. 브라우저가 a.example.com을 위해 어떤 IP로 TLS 연결을 열고, 그 인증서의 SAN 목록이 같은 IP의 b.example.com도 커버하는 걸 보고, 새 연결을 여는 대신 기존 연결을 b.example.com에 재사용합니다. 오리진의 b 가상 호스트가 다른 백엔드에 있거나 자체 SNI를 기대하면, 권한 없는 요청을 서비스하는 대신 421을 반환합니다.
  2. CDN·프록시가 오리진에 잘못된 SNI 전달 - 엣지가 오리진으로 트래픽을 재암호화할 때 자체 TLS 핸드셰이크를 합니다. 잘못된 호스트명(또는 SNI 없음)을 제시하면 오리진이 엉뚱한 가상 호스트로 라우팅하거나, 엄격한 오리진이 421로 거부합니다.
  3. 공유 인증서에서의 엄격한 SNI 강제 - 와일드카드·멀티 SAN 인증서는 브라우저가 하나의 연결을 여러 호스트에 유효하다고 믿게 만들지만, 서버는 요청마다 정확한 SNI 일치를 요구하도록 설정돼 있습니다. 인증서는 “이 호스트들은 같다”고 하고, 서버 설정은 “아니다”라고 합니다.

Diagnose with DechoNet

  • HTTP Check로 최종 코드가 421인지, 어느 호스트가 실패하는지 확인합니다.
  • SSL Check로 인증서의 Subject Alternative Name을 살핍니다 — 병합은 인증서가 같은 IP를 공유하는 호스트명을 둘 이상 커버할 때만 일어납니다.

Resolution Checklist

  • curl --http1.1 https://host/curl --http2 https://host/로 재현합니다. HTTP/2에서만 실패하면 병합입니다.
  • 인증서의 SAN 항목을 나열하고 그중 같은 IP를 공유하는 호스트를 표시합니다 — 브라우저가 병합할 수 있는 호스트들입니다.
  • 오리진에서 의도한 동작을 정합니다: 그 연결에서 모든 SAN 호스트를 서비스하거나, 호스트마다 별도 인증서·IP를 줘서 병합을 막습니다.
  • CDN·로드밸런서가 오리진 앞에 있다면, 업스트림으로 보내는 SNI가 요청 Host 헤더와 일치하는지 확인합니다.
  • Apache·nginx라면 실패하는 호스트명의 가상 호스트가 존재하고, 불일치 SNI를 거부하도록 설정돼 있지 않은지 점검합니다.
  • HTTP Check를 다시 실행해 421이 사라졌는지 확인합니다.

When to Escalate

  • 공유 인증서와 가상 호스트 설정을 관리하는 담당자에게 넘깁니다 — 421은 둘 사이의 불일치라, 한쪽만 고치면 실패 지점이 옮겨갈 뿐입니다.
  • 421이 관리형 CDN에서 온다면 엣지 제공자와 오리진 SNI·Host 헤더 전달 설정을 검토합니다. 오리진의 인증서는 브라우저가 보는 인증서가 아닙니다.

관련 도구

관련 가이드

가이드 공유

[Ad] Guide Detail Inline
← 전체 가이드 보기