Como Testar Configurações do Nginx e Monitorar o Status do Servidor
Teste a sintaxe da configuração do Nginx, recarregue com segurança, verifique o status do serviço, inspecione os logs e valide o comportamento HTTP real.
Como Testar Configurações do Nginx e Monitorar o Status do Servidor
Saber como testar configurações do Nginx e monitorar o status do servidor evita que pequenos erros se tornem indisponibilidades. Um ponto e vírgula faltando, caminho de certificado errado ou nome de servidor duplicado pode quebrar recarregamentos, mas o Nginx oferece ferramentas confiáveis para detectar problemas cedo.
Use estas verificações antes e depois de cada alteração de configuração, especialmente em servidores de produção.
Teste a Sintaxe da Configuração do Nginx
O primeiro comando a executar é:
sudo nginx -t
Isso valida os arquivos de configuração carregados e informa se o Nginx consegue interpretá-los. Um resultado bem-sucedido se parece com:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Se o teste falhar, não recarregue. Leia a mensagem de erro com atenção. O Nginx geralmente inclui o caminho do arquivo e o número da linha:
nginx: [emerg] unexpected "}" in /etc/nginx/sites-enabled/example.com:42
O número da linha é o ponto de partida, nem sempre a resposta completa. O problema real pode ser um ponto e vírgula ou chave faltando algumas linhas antes.
Use este comando após qualquer alteração em:
nginx.conf- Arquivos em
conf.d - Arquivos em
sites-enabled - Caminhos de certificados TLS
- Definições de upstream de proxy
- Snippets incluídos
Para uma visão completa da configuração ativa, execute:
sudo nginx -T
Isso imprime o arquivo principal e os arquivos incluídos. É especialmente útil quando uma diretiva está sendo definida em um arquivo que você esqueceu.
Recarregue com Segurança Após um Teste Bem-Sucedido
Assim que sudo nginx -t passar, recarregue o Nginx:
sudo systemctl reload nginx
Recarregar geralmente é mais seguro do que reiniciar. O Nginx inicia novos workers com a nova configuração enquanto os workers antigos finalizam as requisições existentes. Isso significa que os usuários têm menos probabilidade de ver conexões interrompidas.
Se o recarregamento falhar, verifique o status do serviço:
sudo systemctl status nginx
Em seguida, verifique o journal:
sudo journalctl -u nginx --since "10 minutes ago"
Um fluxo de trabalho prático se parece com:
sudo nginx -t
sudo systemctl reload nginx
sudo systemctl status nginx
Este hábito de três etapas detecta erros de sintaxe, aplica a alteração e confirma que o serviço permaneceu saudável.
Para operações diárias de serviço, veja comandos essenciais de controle do serviço Nginx.
Monitore se o Nginx Está Servindo Tráfego
O status do serviço informa se o Nginx está em execução. Isso não prova que os usuários estão recebendo as respostas corretas. Verifique tanto o processo quanto o comportamento HTTP real.
Confirme que o serviço está ativo:
systemctl is-active nginx
Confirme que o Nginx está ouvindo nas portas esperadas:
sudo ss -ltnp | grep nginx
Você deve ver listeners nas portas 80, 443 ou em quaisquer portas personalizadas que sua configuração usar.
Em seguida, teste uma resposta HTTP localmente:
curl -I http://localhost
Para HTTPS e blocos de servidor nomeados, inclua o hostname:
curl -I https://example.com
Se o DNS ainda não estiver apontado para o servidor, você pode testar com um endereço resolvido:
curl -I --resolve example.com:443:203.0.113.10 https://example.com
Substitua o IP pelo endereço do seu servidor. Isso permite testar o bloco de servidor do Nginx antes que as alterações públicas de DNS entrem em vigor.
Acompanhe os Logs de Acesso e Erro
Os logs mostram o que o Nginx está fazendo após o recarregamento. Os dois arquivos comuns são:
/var/log/nginx/access.log
/var/log/nginx/error.log
Acompanhe o log de erro ao vivo:
sudo tail -f /var/log/nginx/error.log
Acompanhe o log de acesso ao vivo:
sudo tail -f /var/log/nginx/access.log
O log de acesso informa quais requisições estão chegando e quais códigos de status o Nginx retorna. O log de erro informa sobre conexões upstream com falha, arquivos ausentes, problemas de permissão, limites de corpo de requisição, problemas de TLS e avisos de tempo de execução relacionados à configuração.
Procure por padrões, não apenas linhas isoladas:
- Muitas respostas
404podem significar root ou bloco de localização errado. - Muitas respostas
502podem significar que o aplicativo upstream está fora do ar. - Muitas respostas
499podem significar que os clientes estão desistindo antes da resposta terminar. - Erros de permissão repetidos podem significar que a propriedade do arquivo ou os bits de execução do diretório estão errados.
- Erros de handshake TLS podem significar incompatibilidade de certificado ou protocolo.
Se você hospedar vários domínios, configure logs separados por bloco de servidor. Isso torna o monitoramento mais limpo e acelera a resposta a incidentes.
Habilite Verificações Básicas de Status do Nginx
O Nginx inclui um módulo de status leve em muitas compilações. Se disponível, você pode expor um endpoint de status apenas local:
server {
listen 127.0.0.1:8080;
location /nginx_status {
stub_status;
allow 127.0.0.1;
deny all;
}
}
Em seguida, consulte-o do servidor:
curl http://127.0.0.1:8080/nginx_status
Isso pode mostrar conexões ativas e contadores de requisições. Mantenha este endpoint privado. Não o exponha publicamente a menos que esteja protegido por controles de rede adequados.
Para monitoramento em produção, conecte as métricas e logs do Nginx à sua pilha de observabilidade normal. Verificações básicas são úteis, mas dashboards e alertas são melhores para detectar problemas enquanto você está ausente.
Teste Cenários Reais, Não Apenas Sintaxe
Uma verificação de sintaxe pode passar mesmo quando o comportamento está errado. Após uma alteração, teste o caminho ou domínio específico que você tocou.
Se você alterou um redirecionamento, teste tanto a URL antiga quanto a nova:
curl -I http://example.com/old-path
Se você alterou as configurações de proxy, teste uma rota da API:
curl -i https://api.example.com/health
Se você alterou o tratamento de arquivos estáticos, solicite um recurso real:
curl -I https://example.com/assets/app.css
Aqui está um cenário comum: você adiciona um novo aplicativo de página única e nginx -t passa. A página inicial funciona, mas atualizar /dashboard retorna 404. Isso não é um problema de sintaxe. Geralmente significa que seu bloco de localização precisa de um fallback como try_files $uri $uri/ /index.html;.
Quando Buscar Ajuda Profissional
Peça ajuda a um engenheiro de DevOps ou especialista em Nginx quando falhas de recarregamento afetarem a produção, quando verificações de status discordarem de relatos de usuários, ou quando erros envolverem timeouts de upstream, falhas de TLS, balanceadores de carga e comportamento de CDN ao mesmo tempo.
Você também deve escalar se vir travamentos repetidos, saídas de worker inexplicadas ou erros que continuam após reverter a última alteração de configuração. O problema pode estar fora do Nginx, como limites do sistema, falhas de aplicação ou roteamento de rede.
Teste a sintaxe antes de cada recarregamento, monitore o status após cada alteração e verifique o comportamento real da URL do qual os usuários dependem. Essa disciplina simples detecta a maioria dos problemas de configuração do Nginx antes que se tornem incidentes públicos.