Logs de Acesso do Nginx: O Que Cada Campo Significa

Web2026-09-22TryQuickToolBox

Os logs de acesso do Nginx registram cada requisição que seu servidor web processa. Eles são o primeiro lugar a consultar ao depurar erros 404, rastrear endpoints lentos ou investigar tráfego suspeito. No entanto, muitos desenvolvedores apenas passam os olhos pelas linhas brutas do log sem entender completamente cada campo. Este guia detalha o formato padrão de log do Nginx, mostra como personalizá-lo e apresenta técnicas práticas de análise usando ferramentas de linha de comando padrão.

Formato Padrão de Log de Acesso do Nginx

Por padrão, o Nginx usa o formato de log combined, que se parece com isto:

log_format combined '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

Uma linha de log típica:

192.0.2.1 - - [10/Oct/2023:13:55:36 +0000] "GET /api/users HTTP/1.1" 200 1234 "https://example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"

Explicação Campo a Campo

CampoVariávelDescrição
Endereço remoto$remote_addrEndereço IP do cliente que faz a requisição.
Usuário remoto$remote_userNome de usuário se autenticação HTTP for usada; caso contrário, -.
Hora local$time_localHora local do servidor no formato [dia/mês/ano:hora:minuto:segundo fuso].
Requisição$requestLinha completa da requisição: método, caminho e protocolo HTTP.
Status$statusCódigo de status da resposta HTTP (ex.: 200, 404, 500).
Bytes do corpo enviados$body_bytes_sentTamanho do corpo da resposta em bytes, excluindo cabeçalhos.
Referer$http_refererA página que originou a requisição (se fornecida pelo cliente).
User agent$http_user_agentString do software cliente (navegador, bot, ferramenta).

Personalizando o Formato do Log

Você pode definir seu próprio formato para capturar detalhes adicionais como tempo de requisição, tempo de resposta do upstream ou taxa de gzip. Adicione uma diretiva log_format no bloco http e referencie-a em access_log.

http {
    log_format detailed '$remote_addr - $remote_user [$time_local] '
                        '"$request" $status $body_bytes_sent '
                        '"$http_referer" "$http_user_agent" '
                        'rt=$request_time uct="$upstream_connect_time" '
                        'uht="$upstream_header_time" urt="$upstream_response_time"';

    access_log /var/log/nginx/access.log detailed;
}

Variáveis extras comuns:

Analisando Logs do Nginx com Ferramentas de Linha de Comando

Você não precisa de software caro para extrair insights. Ferramentas Unix padrão como grep, awk, sort e uniq são poderosas o suficiente para a maioria das tarefas.

1. Encontrar os Endereços IP Mais Frequentes

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

Isso ajuda a identificar acessos intensos ou possíveis fontes de DDoS.

2. Identificar as URLs Mais Solicitadas

awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

Útil para entender o conteúdo popular ou detectar padrões incomuns.

3. Contar Códigos de Status HTTP

awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr

Veja rapidamente quantos 404s ou 500s estão ocorrendo.

4. Encontrar Requisições com Tempos de Resposta Lentos

Se você adicionou $request_time ao seu formato de log, pode filtrar requisições lentas:

awk '{ if ($NF > 1) print }' /var/log/nginx/access.log

Ajuste o limite (1 segundo aqui) conforme necessário.

5. Detectar User Agents Suspeitos

awk -F'"' '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

Procure por bots maliciosos conhecidos ou clientes incomuns.

Casos de Uso Práticos

Automatizando a Análise com Parsers de Log

Embora one-liners de linha de comando funcionem para consultas pontuais, relatórios regulares se beneficiam de ferramentas dedicadas. Você pode usar analisadores de log de código aberto como GoAccess ou AWStats, ou criar scripts personalizados. Para uma análise rápida, baseada no navegador e sem instalar nada, o Nginx Log Analyzer permite colar linhas de log e obter resumos instantâneos de códigos de status, IPs mais frequentes e caminhos solicitados.

Melhores Práticas para Gerenciamento de Logs

FAQ

Qual é a diferença entre logs de acesso e logs de erro no Nginx?

Os logs de acesso registram cada requisição processada pelo Nginx, incluindo IP do cliente, método da requisição, código de status e user agent. Os logs de erro capturam mensagens de diagnóstico sobre problemas do servidor, como conexões falhas, erros de configuração ou timeouts do upstream. Ambos são essenciais para diferentes cenários de solução de problemas.

Como posso ver o IP real do cliente quando o Nginx está atrás de um balanceador de carga?

Quando o Nginx está atrás de um proxy ou balanceador de carga, $remote_addr mostra o IP do balanceador. Para registrar o IP original do cliente, configure o módulo real_ip para confiar no IP do balanceador e use $http_x_forwarded_for ou $realip_remote_addr no seu formato de log.

Posso analisar logs do Nginx sem instalar software?

Sim. Você pode usar comandos Unix padrão como grep, awk e sort diretamente no terminal. Para uma abordagem gráfica baseada no navegador, ferramentas online como o Nginx Log Analyzer fornecem insights rápidos sem qualquer instalação.

Pronto para mergulhar nos seus logs? Experimente o Nginx Log Analyzer para analisar e visualizar seus logs de acesso em segundos—sem necessidade de configuração.