Skip to content

Código de status HTTP · Erros do cliente (4xx)

Erro 421 Misdirected Request

O erro 421 Misdirected Request significa que o pedido chegou a um servidor que não pode responder com autoridade por aquele domínio nesta conexão. Na maioria das vezes o nome no SNI do TLS e o cabeçalho Host não batem, em geral atrás de um proxy reverso que não repassa o SNI.

Dados sobre este código de status
Classe4xx, Erros do cliente
Definido emRFC 9110 §15.5.20
Pode ir para o cache por padrãoSó com Cache-Control ou Expires explícitos
Pode repetir o pedidoSim, por uma conexão nova, até para métodos não idempotentes (RFC 9110)
Cabeçalhos relevantes
  • Host: ou :authority no HTTP/2; o servidor não atende esse nome nesta conexão

O que significa o 421

A RFC 9110, seção 15.5.20, diz que o servidor de origem envia 421 quando a URI pedida não corresponde a uma origem para a qual ele foi configurado, ou não corresponde ao contexto da conexão. O cliente pode repetir numa conexão nova, mesmo que o método não seja idempotente, porque nada foi processado. Proxies não podem gerar 421.

O código surgiu com o HTTP/2, em que o navegador reaproveita uma conexão TLS para vários domínios quando o certificado cobre todos e o DNS aponta para o mesmo IP. Se o servidor nesse IP não hospeda de fato um desses domínios, o 421 avisa o navegador para abrir uma conexão só para ele.

Uma segunda onda veio em julho de 2025 com o Apache httpd 2.4.64, que endureceu a checagem de SNI. Configurações com nginx na frente do Apache via HTTPS (comuns em cPanel, Plesk e DirectAdmin) passaram a devolver 421 porque o nginx não enviava SNI para o backend. O log de erros do Apache mostra AH02032 nesse caso.

Causas comuns

Se você está visitando o site

  • O navegador reaproveitou uma conexão HTTP/2 para um segundo subdomínio que divide certificado e IP, mas é atendido por outro backend.
  • O site tem um proxy mal configurado; todo visitante vê o mesmo 421.

Se você administra o servidor

  • O nginx faz proxy para um backend HTTPS sem proxy_ssl_server_name on, então o backend não recebe SNI, ou recebe o errado, e recusa o Host.
  • Um certificado wildcard ou multidomínio permite que o navegador junte conexões de hosts que ficam em virtual hosts ou servidores diferentes.
  • O mod_ssl do Apache percebe que o nome no SNI e o cabeçalho Host apontam para virtual hosts com configurações TLS incompatíveis (AH02032).

Como resolver

Se você está visitando o site

  • Recarregue a página; o navegador tenta de novo numa conexão nova. Se persistir, feche o navegador para descartar conexões abertas, ou teste outro navegador.

Se você administra o servidor

  • No nginx, repasse o SNI para upstreams HTTPS: proxy_ssl_server_name on; e proxy_ssl_name $host;. Os painéis de hospedagem incluíram isso depois da mudança do Apache 2.4.64.
  • Dê certificados separados, ou IPs separados, para hosts que ficam em servidores diferentes, assim o navegador não junta as conexões deles.
  • Procure AH02032 no log de erros do Apache para confirmar a divergência entre SNI e Host.

Como enviar um 421

Na maior parte das vezes você está corrigindo um 421, não enviando. O bloco do nginx é a correção para o caso do proxy reverso; os exemplos de Express e Go mostram uma origem recusando domínios que não atende.

Express (Node.js)
const HOSTS = new Set(['example.com', 'www.example.com']);

app.use((req, res, next) => {
  if (!HOSTS.has(req.hostname)) {
    return res.status(421).send('Misdirected Request');
  }
  next();
});
Go net/http
func onlyHosts(next http.Handler, hosts ...string) http.Handler {
	allowed := map[string]bool{}
	for _, h := range hosts {
		allowed[h] = true
	}
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		if !allowed[r.Host] {
			http.Error(w, "misdirected request", http.StatusMisdirectedRequest) // 421
			return
		}
		next.ServeHTTP(w, r)
	})
}
Nginx
# Fix: send SNI to an HTTPS backend (avoids 421 from Apache 2.4.64+)
location / {
  proxy_pass https://backend;
  proxy_set_header Host $host;
  proxy_ssl_server_name on;
  proxy_ssl_name $host;
}

Costuma ser confundido com

421 vs 400
O 400 serve para um Host ausente ou malformado; o 421 indica que o Host é válido, só não é atendido nesta conexão.
421 vs 502
O 502 é um proxy relatando resposta ruim do upstream; o 421 vem da própria origem, e proxies não podem gerá-lo.

Perguntas frequentes

Como resolver o erro 421 Misdirected Request com nginx?
Se o nginx faz proxy para um backend HTTPS, adicione proxy_ssl_server_name on; e proxy_ssl_name $host; no bloco location para o backend receber o SNI certo, e recarregue o nginx.
Por que o erro 421 apareceu depois de atualizar o Apache?
O Apache httpd 2.4.64 (julho de 2025) passou a exigir correspondência mais rígida entre o nome do SNI e o cabeçalho Host. Proxies na frente que não mandavam SNI para o Apache começaram a receber 421, registrado como AH02032.
O navegador pode repetir o pedido depois de um 421?
Pode. A RFC 9110 permite repetir numa conexão diferente, seja o método idempotente ou não, porque o servidor não processou o pedido.

Revisado em por Arielton Oberek.