O que são códigos de status de erro do servidor?
O servidor cometeu um erro
Imagine que você entra em um restaurante e faz seu pedido perfeitamente: item correto, mesa correta, pagamento válido. Mas então a cozinha pega fogo. Isso não é sua culpa como cliente; o restaurante não consegue atender seu pedido agora.
É isso que os códigos de status 5xx representam no HTTP. O cliente fez tudo certo, mas o servidor encontrou um problema e não conseguiu completar a requisição.
O que torna o 5xx diferente do 4xx?
Com erros 4xx, o cliente é o culpado: URL incorreta, autenticação ausente, dados inválidos. Com erros 5xx, o servidor é o culpado: ele travou, expirou ou encontrou uma condição inesperada.
Requisição do Cliente (válida) ──→ Servidor (quebrado) ──→ Resposta 5xx
"Eu fiz minha parte corretamente, "Algo deu errado
mas algo quebrou do nosso lado."
no lado do servidor."
Essa distinção é importante porque:
- 4xx: O cliente deve corrigir a requisição e tentar novamente
- 5xx: A equipe do servidor precisa investigar e corrigir o problema
A família 5xx
Aqui estão os códigos de erro de servidor mais importantes que você encontrará:
| Código | Nome | Quando Acontece |
|---|---|---|
| 500 | Internal Server Error | Exceção não tratada ou travamento |
| 501 | Not Implemented | Servidor não suporta a funcionalidade |
| 502 | Bad Gateway | Servidor upstream enviou resposta inválida |
| 503 | Service Unavailable | Servidor sobrecarregado ou em manutenção |
| 504 | Gateway Timeout | Servidor upstream não respondeu a tempo |
| 505 | HTTP Version Not Supported | Servidor não suporta a versão HTTP usada |
Na prática, você lidará com 500, 502, 503 e 504 com mais frequência.
Por que erros 5xx são críticos
Diferente dos erros 4xx que afetam usuários individuais fazendo requisições incorretas, erros 5xx frequentemente afetam todos os usuários ao mesmo tempo:
500 Internal Server Error |
503 Service Unavailable |
|
|---|---|---|
| O que significa | O código da sua aplicação travou | O servidor está vivo mas não consegue processar requisições |
| Alcance | Toda requisição que passa pelo caminho quebrado | Todos os usuários, ou só novas conexões |
| Causa usual | Um bug, não configuração | Manutenção planejada ou sobrecarga |
| O que fazer | Atenção imediata do desenvolvedor | Costuma se resolver sozinho, ou precisa escalar |
Erros 5xx são incidentes de alta prioridade porque significam que sua aplicação está falhando em servir usuários que não estão fazendo nada errado.
O papel da infraestrutura
Aplicações web modernas têm múltiplas camadas entre o usuário e seu código:
Usuário ──→ CDN ──→ Proxy reverso ──→ Servidor de app ──→ Seu app ──→ Banco de Dados
(Nginx) (Puma) (Rails) (PostgreSQL)
Um erro 5xx pode se originar em qualquer camada:
| Camada | 5xx Típico |
|---|---|
| Load Balancer / Proxy Reverso | 502, 504 |
| Servidor de Aplicação (Puma) | 500, 503 |
| Código da Aplicação (Rails) | 500 |
| Banco de Dados | 500, 503 |
| Chamadas a APIs externas | 502, 504 |
Saber qual camada causou o erro é o primeiro passo na depuração.
5xx em desenvolvimento vs produção
O Rails lida com erros 5xx de forma muito diferente dependendo do ambiente:
| Aspecto | Desenvolvimento | Produção |
|---|---|---|
| Página de erro | Stack trace detalhado | Genérico "Algo deu errado" |
| Detalhes do erro | Exceção completa + código fonte | Escondidos dos usuários |
| Logging | Saída no console | Arquivos de log + rastreamento de erros |
| Objetivo | Ajudar a depurar rapidamente | Proteger usuários e segurança |
Em desenvolvimento, ver um erro 500 mostra o stack trace completo direto no navegador. Em produção, você nunca expõe detalhes internos: em vez disso, registra nos logs e mostra uma página de erro amigável.
Resumo
| Conceito | Ponto Chave |
|---|---|
| Significado do 5xx | O servidor falhou ao atender uma requisição válida |
| 5xx vs 4xx | 5xx = culpa do servidor, 4xx = culpa do cliente |
| Códigos comuns | 500, 502, 503, 504 são os mais frequentes |
| Impacto | Muitas vezes afeta todos os usuários de uma vez |
| Infraestrutura | Erros podem vir de qualquer camada (proxy, app, banco de dados) |
| Ambientes | Desenvolvimento mostra detalhes; produção os esconde |
Continue com a aula 2
500 Internal Server Error
Mostra as causas de erros 500 no Rails, como o Rails os trata e como retornar códigos mais específicos.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.