tcpdump nginx. Às vezes, o Nginx é como um médico que diz que você está bem porque seus sinais vitais estão normais, mas você continua sentindo uma dor latente. O log de erro pode estar vazio e o log de acesso mostrar apenas um 499 ou um 504 genérico, enquanto o problema real está acontecendo em uma camada que o software sequer enxerga.
Para esses momentos, precisamos descer ao nível dos bits e bytes com o tcpdump.
Por que o log do Nginx falha?
O Nginx registra eventos na camada de aplicação (L7). Ele só loga o que o sistema operacional entrega para ele. Se o problema estiver no Three-way Handshake do TCP, em um firewall silencioso (como o CrowdSec ou Fail2Ban) ou em pacotes fragmentados, o Nginx simplesmente ficará esperando e nunca escreverá uma linha sequer no log.
O Fluxo da Verdade
- Rede (L3/L4): Onde o
tcpdumpvive. Ele vê o pacote chegando na interface. - Stack do Kernel: Onde o
sysctl.confe o firewall processam os dados. - Aplicação (L7): Onde o Nginx vive. Ele só vê o que sobreviveu às etapas acima.
Comandos Essenciais para Diagnóstico
1. Monitorando tráfego na porta 80/443
Se você suspeita que o tráfego nem está chegando ao servidor, use:
tcpdump -i any port 443 -n -vv
-i any: Escuta em todas as interfaces.-n: Não resolve DNS (essencial para não sobrecarregar a CPU).-vv: Verborragia extra para ver flags TCP (como SYN, ACK, FIN).
2. Capturando pacotes para análise no Wireshark
Ler texto no terminal é difícil para fluxos complexos. O ideal é salvar em um arquivo .pcap:
tcpdump -i eth0 port 443 -w troubleshooting.pcap
Depois, você pode baixar esse arquivo e abrir no Wireshark para ver a reconstrução colorida do fluxo TCP.
3. Filtrando por IP de um cliente específico
Se um usuário reclama de lentidão intermitente:
tcpdump -i any host 192.168.1.100 and port 443
Cenários onde o tcpdump é o Herói
O Mistério do “Connection Reset”
Se o cliente recebe um “Connection Reset”, mas o Nginx não mostra erro, o tcpdump pode revelar que o kernel está enviando um pacote RST. Isso geralmente indica que a fila de conexões (backlog) está cheia ou que o firewall cortou a conexão antes do Nginx processar.
Latência no Backend (Upstream)
Se você usa o Nginx como Proxy Reverso para um app em Docker ou outro servidor:
tcpdump -i any port 8080 -n
Aqui você consegue medir exatamente quanto tempo o seu serviço de upstream (PHP-FPM, Node.js, etc.) leva para responder ao Nginx, isolando se o gargalo é a rede interna ou o código.
Problemas de SSL/TLS
O Nginx só loga “SSL Handshake Failed”. Com o tcpdump, você vê se o cliente está tentando usar uma versão de protocolo antiga (TLS 1.0) que seu servidor já desativou por segurança.
Dicas de Performance e Segurança
- Cuidado com o Volume: Em servidores de alto tráfego, o
tcpdumppode gerar arquivos imensos em segundos. Sempre use filtros específicos. - Analise o MTU: Se pacotes grandes estão “sumindo”, o
tcpdumpmostrará pacotes ICMP “Fragmentation Needed”, algo que o Nginx nunca saberia.
Dominar essa ferramenta transforma você de um administrador que “tenta configurações” em um especialista que “prova diagnósticos”.

