HTTPQUERY
한국어

421 Misdirected Request

사용법

421 Misdirected Request 오류는 서버가 응답을 만들어 낼 수 없음을 나타냅니다. 이 상태는 연결 재사용의 결과로 전송되며, 서버가 클라이언트의 연결 재사용을 원하지 않을 때 사용됩니다. 이에 대응해 클라이언트는 다른 연결로 요청을 다시 제출해 봅니다.

대체 서비스(Alt-Svc)가 선택된 경우에도 이런 일이 발생합니다.

이 상태는 프록시가 생성하지 않습니다.

SEO 영향

Google은 HTTP/2를 통한 Googlebot 크롤링을 거부하려면 421을 반환할 것을 권장합니다. Googlebot은 HTTP/1.1과 HTTP/2 양쪽으로 크롤링합니다. Googlebot의 HTTP/2 요청에 421로 응답하면 해당 사이트에 대한 HTTP/2 크롤링이 중단됩니다. 421을 반환하는 페이지는 색인되지 않으며, 이전에 색인되었다가 이 코드를 반환하는 URL은 검색 결과에서 제거됩니다.

예시

클라이언트가 리소스를 요청하지만, 요청이 이 호스트를 위한 것이 아닌 연결로 도착했으므로 서버는 421 Misdirected Request로 응답합니다.

요청

GET /tech-news HTTP/2
Host: example.com

응답

HTTP/2 421 Misdirected Request

해결 방법

의도한 오리진으로 향하는 새 전용 연결에서 요청을 재시도하세요. 브라우저나 클라이언트는 기존 HTTP/2 다중화 연결을 재사용하지 않고 새 TCP/TLS 세션을 엽니다.

서버 측에서는 TLS 인증서가 그 서버가 처리하는 모든 호스트명을 포괄하는지 확인하세요. SNI(Server Name Indication) 값과 Host 헤더의 불일치가 가장 흔한 원인입니다.

nginx가 HTTPS로 Apache 백엔드에 리버스 프록시할 때는 Apache가 올바른 호스트명을 볼 수 있도록 SNI 전달을 활성화하세요.

Apache에서는 각 가상 호스트에 일치하는 ServerName과 유효한 인증서가 있는지 확인하세요. 최근 Apache 릴리스에서 강화된 SNI 검사는 SNI 호스트명과 Host 헤더가 충돌하는 요청을 거부합니다.

트래픽을 오리진으로 재암호화하는 CDN과 로드 밸런서에서는 업스트림 TLS 핸드셰이크가 올바른 SNI 값을 전송하도록 하세요. Cloudflare 및 유사한 서비스에서는 오리진 인증서가 제공되는 모든 호스트명을 나열해야 합니다.

여러 도메인이 IP를 공유하면서 서로 다른 인증서를 사용한다면 서버에서 HTTP/2 연결 병합(coalescing)을 비활성화하세요. 각 도메인에는 별도의 연결이 필요합니다.

코드 참고

.NET

HttpStatusCode.MisdirectedRequest

Rust

http::StatusCode::MISDIRECTED_REQUEST

Rails

:misdirected_request

Go

http.StatusMisdirectedRequest

Symfony

Response::HTTP_MISDIRECTED_REQUEST

Python3.5+

http.HTTPStatus.MISDIRECTED_REQUEST

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_MISDIRECTED_REQUEST

Angular

@angular/common/http/HttpStatusCode.MisdirectedRequest