AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Como faço para capturar endereços IP de clientes em logs do servidor web com o Elastic Load Balancing?
Uso o Elastic Load Balancing (ELB) para meu servidor web e vejo o endereço IP do balanceador de carga nos logs de acesso ao servidor web. Em vez disso, quero capturar endereços IP do cliente.
Descrição breve
Os logs de acesso ao servidor web capturam o endereço IP do balanceador de carga porque o balanceador de carga estabelece a conexão com as instâncias. Para capturar os endereços IP dos clientes nos logs de acesso ao servidor web, configure o seguinte:
-
Para Application Load Balancers e Classic Load Balancers com receptores HTTP/HTTPS, adicione o cabeçalho HTTP X-Forwarded-For para capturar os endereços IP do cliente. Em seguida, você pode configurar os logs de acesso ao servidor web para registrar esses endereços IP.
Observação: Em certos casos, o cabeçalho X-FORWARDED-FOR pode estar ausente ou vazio. As solicitações de verificação de integridade iniciadas por Application Load Balancers, Classic Load Balancers e Network Load Balancers não incluem o cabeçalho X-FORWARDED-FOR. Além disso, Network Load Balancers e Classic Load Balancers com receptores TCP/SSL não acrescentam o cabeçalho X-FORWARDED-FOR às solicitações recebidas. Para Application Load Balancers, escolha o modo de processamento Append para adicionar consistentemente o cabeçalho X-FORWARDED-FOR.
-
Para os Classic Load Balancers com receptores TCP/SSL, configure o suporte ao protocolo de proxy no Classic Load Balancer e na aplicação de destino.
-
Para os Network Load Balancers, registre seus destinos por ID de instância para capturar endereços IP do cliente sem configuração adicional do servidor web. Para obter instruções, consulte Atributos do grupo de destino.
-
Para os Network Load Balancers, quando somente é possível registrar endereços IP como destinos, ative o protocolo de proxy versão 2 no balanceador de carga. Para obter instruções, consulte o Protocolo de proxy.
Resolução
Application Load Balancers e Classic Load Balancers com receptores HTTP/HTTPS (Apache)
Para adicionar o cabeçalho HTTP X-Forwarded-For e configurar seus logs de acesso ao servidor web, conclua as seguintes etapas:
-
Use um editor de texto para abrir o arquivo de configuração do Apache. A localização varia de acordo com a sua configuração, como /etc/httpd/conf/httpd.conf para Amazon Linux e RHEL ou /etc/apache2/apache2.conf para Ubuntu.
-
Na seção LogFormat, adicione %{X-Forwarded-For}i, como mostra o exemplo a seguir:
... LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common ... -
Salve as alterações.
-
Recarregue o serviço do Apache. Com base no seu sistema, execute um dos comandos a seguir:
Sysvinit, sistemas baseados em Debian (como Ubuntu) e SUSE (como SLES11)
# /etc/init.d/apache2 reloadSysvinit, sistemas baseados em RPM (como RHEL 6 e Amazon Linux), exceto SUSE
# /etc/init.d/httpd reloadSystemd, sistemas baseados em Debian (como Ubuntu) e SUSE (como SLES12)
# systemctl reload apache2Sistemas baseados em RPM (como RHEL 7 e Amazon Linux 2), exceto SUSE
# systemctl reload httpd -
Abra os logs de acesso ao servidor web do Apache. A localização varia de acordo com a sua configuração.
-
Verifique se os endereços IP do cliente estão registrados no cabeçalho X-Forwarded-For.
Application Load Balancers e Classic Load Balancers com receptores HTTP/HTTPS (NGINX)
Para adicionar o cabeçalho HTTP X-Forwarded-For e configurar seus logs de acesso ao servidor web, conclua as seguintes etapas:
-
Abra o arquivo de configuração do NGINX usando um editor de texto. A localização normalmente é /etc/nginx/nginx.conf.
-
Na seção LogFormat, adicione $http_x_forwarded_for, conforme mostra o exemplo a seguir:
http { ... log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; ... } -
Salve as alterações.
-
Recarregue o serviço do NGINX. Para Amazon Linux 2 ou RHEL, execute o seguinte comando:
systemctl reload nginxObservação: o comando para recarregar o serviço do NGINX é diferente em outros sistemas. Os comandos para recarregar o NGINX são semelhantes aos comandos para recarregar o serviço do Apache na seção anterior.
-
Abra seus logs de acesso ao servidor web do NGINX. A localização varia de acordo com a sua configuração.
-
Verifique se os endereços IP do cliente estão registrados no cabeçalho X-Forwarded-For.
Classic Load Balancers com receptores TCP/SSL (Apache)
Para configurar o suporte ao protocolo de proxy, conclua as seguintes etapas:
-
Use um editor de texto para abrir o arquivo de configuração do Apache. A localização varia de acordo com a configuração, como /etc/httpd/conf/httpd.conf para Amazon Linux e RHEL ou /etc/apache2/apache2.conf para Ubuntu.
-
Certifique-se de que a configuração do Apache carregue o módulo mod_remoteip (disponível para o Apache versão 2.4.31 e mais recentes). Para obter mais informações, consulte Apache Module mod_remoteip no site do Apache. Esse módulo inclui a diretriz RemoteIPProxyProtocol. Para obter mais informações, consulte RemoteIPProxyProtocol Directive no site do Apache. No arquivo de configuração, verifique se há uma linha semelhante a uma das seguintes:
Amazon Linux ou RHEL
LoadModule remoteip_module modules/mod_remoteip.soUbuntu
LoadModule remoteip_module /usr/lib/apache2/modules/mod_remoteip.so -
Para confirmar se o módulo mod_remoteip carrega, execute o seguinte comando:
$ sudo apachectl -t -D DUMP_MODULES | grep -i remoteip -
Revise a saída e verifique se há uma linha semelhante ao seguinte:
remoteip_module (shared)Importante: se a saída não contiver essa linha, o módulo não será incluído ou carregado na sua configuração. Certifique-se de ativar o módulo antes de continuar.
-
Para ativar o suporte ao protocolo de proxy, adicione a seguinte linha ao arquivo de configuração do Apache:
RemoteIPProxyProtocol On -
Edite a seção LogFormat do arquivo de configuração para capturar o endereço IP remoto (%a) e a porta remota (%{remote}p:):
LogFormat "%h %p %a %{remote}p %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined -
Salve as alterações.
-
Recarregue o serviço do Apache. Com base no seu sistema, execute um dos comandos a seguir:
Sysvinit, sistemas baseados em Debian (como Ubuntu) e SUSE (como SLES11)
# /etc/init.d/apache2 reloadSysvinit, sistemas baseados em RPM (como RHEL 6 e Amazon Linux), exceto SUSE
# /etc/init.d/httpd reloadSystemd, sistemas baseados em Debian (como Ubuntu) e SUSE (como SLES12)
# systemctl reload apache2Systemd, sistemas baseados em RPM (como RHEL 7 e Amazon Linux 2), exceto SUSE
# systemctl reload httpd -
Abra os logs de acesso ao servidor web do Apache. A localização varia de acordo com a sua configuração.
-
Verifique se os endereços IP do cliente estão registrados no cabeçalho Protocolo de proxy.
-
Ative o suporte ao protocolo de proxy na aplicação de destino.
Classic Load Balancers com receptores TCP/SSL (NGINX)
Para configurar o suporte ao protocolo de proxy, conclua as seguintes etapas:
-
Abra o arquivo de configuração do NGINX usando um editor de texto. A localização normalmente é /etc/nginx/nginx.conf.
-
Atualize a linha listen da seção server para proxy_protocol. Atualize a linha log_format da seção http para definir o proxy_protocol_addr:
http { ... log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$proxy_protocol_addr"'; access_log /var/log/nginx/access.log main; ... } server { ... listen 80 default_server proxy_protocol; ... } ... } -
Salve as alterações.
-
Recarregue o serviço do NGINX. Para Amazon Linux 2 ou RHEL, execute o seguinte comando:
systemctl reload nginxObservação: o comando para recarregar o serviço do NGINX é diferente em outros sistemas. Os comandos para recarregar o NGINX são semelhantes aos comandos para recarregar o serviço do Apache na seção anterior.
-
Abra os logs de acesso ao servidor web do NGINX. A localização varia de acordo com a sua configuração.
-
Verifique se os endereços IP do cliente estão registrados no cabeçalho Protocolo de proxy.
-
Ative o suporte ao protocolo de proxy na aplicação de destino.
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
feita há um ano
feita há 8 meses
feita há um ano