A configuração de uma aplicação web na nuvem é sempre uma tarefa instigante e repleta de descobertas.
Recentemente, lancei a ferramenta etechpt.com Tools, que está hospedada na AWS, com a proteção da Cloudflare.
Utilizo o balanceador de carga de aplicações da AWS em conjunto com o Nginx como servidor web. Após a implementação, ao analisar o arquivo access.log, observei que todas as requisições eram registradas com o IP interno do balanceador de carga.
Essa situação é problemática para quem deseja analisar os logs do servidor web e identificar os visitantes reais. Percebi que havia uma configuração faltante ou incorreta que impedia a correta identificação do IP do cliente.
Você se encontra na mesma situação?
A seguir, apresento uma solução para obter o IP do cliente nos seus logs de acesso do Nginx.
Recuperando o IP do Visitante em Ambientes AWS ou Google Cloud LB
- Acesse seu servidor web Nginx.
- Navegue até o diretório de instalação (o padrão é /etc/nginx).
- Crie um backup do arquivo nginx.conf.
- Adicione o seguinte bloco de configuração dentro do bloco HTTP:
real_ip_header X-Forwarded-For; set_real_ip_from 0.0.0.0/0;
- Reinicie o Nginx. A partir de agora, você deverá visualizar o IP do visitante no seu arquivo access.log.
Se você utiliza Cloudflare, notará que o IP registrado será o da Cloudflare em vez do IP do cliente. Nesse caso, siga os passos adicionais abaixo.
Obtendo o IP Real do Cliente Através da Cloudflare
A Cloudflare é um excelente provedor de CDN e serviços de segurança, e eu sou um fã. Se você, assim como eu, utiliza a Cloudflare e deseja registrar o IP real do visitante nos logs do servidor web, veja como proceder.
Partindo do princípio de que você está conectado ao servidor Nginx:
Faça uma cópia de segurança do arquivo de configuração do seu site (geralmente localizado em /etc/nginx/sites-available/seudominio).
Adicione as seguintes linhas no início desse arquivo:
set_real_ip_from 103.21.244.0/22; set_real_ip_from 103.22.200.0/22; set_real_ip_from 103.31.4.0/22; set_real_ip_from 104.16.0.0/13; set_real_ip_from 104.24.0.0/14; set_real_ip_from 108.162.192.0/18; set_real_ip_from 131.0.72.0/22; set_real_ip_from 141.101.64.0/18; set_real_ip_from 162.158.0.0/15; set_real_ip_from 172.64.0.0/13; set_real_ip_from 173.245.48.0/20; set_real_ip_from 188.114.96.0/20; set_real_ip_from 190.93.240.0/20; set_real_ip_from 197.234.240.0/22; set_real_ip_from 198.41.128.0/17; set_real_ip_from 199.27.128.0/21; set_real_ip_from 2400:cb00::/32; set_real_ip_from 2606:4700::/32; set_real_ip_from 2803:f800::/32; set_real_ip_from 2405:b500::/32; set_real_ip_from 2405:8100::/32; set_real_ip_from 2c0f:f248::/32; set_real_ip_from 2a06:98c0::/29; real_ip_header CF-Connecting-IP;
Observação: Recomendo que você valide a lista de IPs na Página Oficial para garantir que esteja sempre atualizada.
Reinicie o Nginx novamente. Agora você deverá visualizar o IP do cliente correto. Essa solução tem sido muito útil para mim, e espero que também seja para você.
Na sequência, abordaremos como implementar cabeçalhos de segurança usando Cloudflare Workers.
Gostou deste artigo? Que tal compartilhá-lo com seus amigos e colegas?