Todos os produtos
Search
Central de documentação

Server Load Balancer:Retrieve the client IP on a backend server

Última atualização: Aug 21, 2026

Quando o ALB encaminha requisições, o endereço IP de origem visível para o servidor de back-end é o da instância do ALB. O ALB pode anexar o IP real do cliente ao campo X-Forwarded-For no cabeçalho HTTP. Você pode obter essa informação com uma configuração simples no servidor de back-end.

O campo X-Forwarded-For tem o seguinte formato:

X-Forwarded-For: <real client IP, proxy server 1-IP, proxy server 2-IP, ...>

Procedimento

Etapa 1: Verificar a configuração do listener para X-Forwarded-For

  1. Faça login no ALB console e clique no ID da instância desejada para acessar a página Instance Details.

  2. Na aba Listener, clique no ID do listener desejado. Na página Listener Details, na seção Basic Information, verifique se a opção Add HTTP Header inclui X-Forwarded-For.

    Essa opção vem ativada por padrão. Caso esteja desativada, clique em Modify Listener na seção Basic Information e ative-a na seção Advanced Settings.

Etapa 2: Configurar o servidor de back-end

  • Este tópico descreve como registrar o IP real do cliente no log de acesso do servidor de back-end por meio do campo X-Forwarded-For. As variáveis da camada de conexão do servidor (como $remote_addr no Nginx e %h no Apache) mantêm o IP de encaminhamento do ALB (IP local) e não sofrem alterações.

  • Para substituir diretamente as variáveis da camada de conexão pelo IP real do cliente e garantir que logs, controles de acesso e outras regras baseadas nessas variáveis funcionem sem modificações, consulte How to let Nginx or Apache directly retrieve the real client IP (replacing the connection-layer address).

Servidor Nginx

Este tópico usa como exemplo um servidor Nginx executando Alibaba Cloud Linux 3.2104 e nginx/1.20.1. A configuração real pode variar conforme o ambiente.

O Nginx usa o módulo http_realip_module para analisar o cabeçalho X-Forwarded-For e obter o IP real do cliente.

  1. Verifique se o módulo está instalado: No servidor, execute o comando nginx -V 2>&1 | grep --color=auto http_realip_module. Se a saída contiver --with-http_realip_module, o módulo já está instalado.

    image

    Nas principais distribuições Linux, o Nginx instalado via gerenciador de pacotes, como yum ou apt, geralmente inclui esse módulo por padrão. Se ele não estiver instalado, recomendamos instalar ou atualizar o Nginx usando um gerenciador de pacotes.
  2. Modifique o arquivo de configuração do Nginx: Execute sudo nginx -t para localizar o caminho do arquivo de configuração. Normalmente, o caminho padrão é /etc/nginx/nginx.conf.

    http {
        # Ensure the log format includes $http_x_forwarded_for to record the value of the X-Forwarded-For header.
        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';    
        # Ensure the access log uses the preceding log format.             
        access_log  /var/log/nginx/access.log  main;
        #  ...
    }
  3. Recarregue a configuração: Execute sudo nginx -t para verificar a sintaxe da configuração. Se a sintaxe estiver correta, execute sudo nginx -s reload para aplicar as alterações.

Servidor Apache

Este tópico usa como exemplo um servidor Apache executando Alibaba Cloud Linux 3.2104 e Apache/2.4.37. A configuração real pode variar conforme o ambiente.

O Apache usa o módulo mod_remoteip para analisar o cabeçalho X-Forwarded-For e obter o IP real do cliente.

  1. Verifique se o módulo está instalado: No servidor, execute o comando httpd -M | grep remoteip_module. Se a saída contiver remoteip_module (shared), o módulo já está instalado.

    image

    Nas principais distribuições Linux, o Apache instalado via gerenciador de pacotes, como yum ou apt, geralmente inclui esse módulo por padrão. Se ele não estiver instalado, recomendamos instalar ou atualizar o Apache usando um gerenciador de pacotes.
  2. Modifique o arquivo de configuração do Apache: Execute httpd -V para localizar o caminho do arquivo de configuração. Normalmente, o caminho padrão é /etc/httpd/conf/httpd.conf.

    # ...
    <IfModule log_config_module>
    # ...
    # Ensure the log format includes %{X-Forwarded-For}i to record the value of the X-Forwarded-For header.
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{X-Forwarded-For}i" combined
    # ...
    # Ensure the access log uses the preceding log format.
    CustomLog "logs/access_log" combined
    </IfModule>
    # ...
  3. Recarregue a configuração: Execute sudo systemctl restart httpd para aplicar as alterações.

Servidor IIS

Este tópico usa como exemplo um servidor IIS executando Windows Server 2022 21H2 e IIS 10.0. A configuração real pode variar conforme o ambiente.

  1. No painel Connections do IIS Manager, selecione o servidor desejado. No painel principal, clique duas vezes em Logging.

    image

  2. Na seção Log File, clique em Select Fields.

    image

  3. Na caixa de diálogo W3C Logging Fields, clique em Add Field. Na caixa de diálogo Add Custom Field, configure as informações do campo e clique em OK.

    • Field Name: Insira X-Forwarded-For.

    • Source Type: Mantenha o valor padrão, Request Header.

    • source: Insira X-Forwarded-For.

    image

  4. Confirme a adição do campo personalizado e clique em OK.

    image

  5. No painel Actions à direita, clique em Apply para salvar as alterações.

    image

Etapa 3: Verificar a obtenção do IP do cliente

Consulte o log de acesso do servidor web de back-end para confirmar a obtenção do IP real do cliente.

Servidor Nginx

O caminho padrão do log de acesso do Nginx é /var/log/nginx/access.log.

Em cada entrada de log, o valor da variável $http_x_forwarded_for corresponde ao IP real do cliente.

image

Servidor Apache

O caminho padrão do log de acesso do Apache é /var/log/httpd/access_log.

Em cada entrada de log, o valor da variável %{X-Forwarded-For}i corresponde ao IP real do cliente.

image

Servidor IIS

O caminho padrão do log de acesso do IIS é %SystemDrive%\inetpub\logs\LogFiles.

Em cada entrada de log, o valor no último campo X-Forwarded-For corresponde ao IP real do cliente.

image

Melhores práticas para produção

  • Valide e filtre o cabeçalho X-Forwarded-For: No servidor de back-end, valide e filtre o cabeçalho X-Forwarded-For. Rejeite entradas mal formatadas ou com endereços IP não confiáveis.

  • Use políticas de segurança: Configure grupos de segurança ou outras políticas de segurança de terceiros entre o ALB e os servidores de back-end para restringir e filtrar requisições maliciosas com cabeçalhos X-Forwarded-For falsificados.

  • Criptografia TLS: Adote criptografia TLS para proteger as comunicações entre os componentes, incluindo a transmissão do cabeçalho X-Forwarded-For. Isso mitiga riscos de ataques man-in-the-middle e adulteração de dados.

Perguntas frequentes

Acesso frequente de IPs iniciados com 100

  • Upgraded ALB instances usam endereços IP privados (IPs locais) dos blocos CIDR de seus vSwitches associados para se comunicar com os servidores de back-end.

  • Instâncias do ALB não atualizadas usam o intervalo de endereços 100.64.0.0/10, reservado pela Alibaba Cloud e sem riscos de segurança, para se comunicar com os servidores de back-end.

Além de encaminhar requisições para os servidores de back-end, o ALB também executa verificações de integridade contínuas. Se você usar uma instância do ALB não atualizada, os logs de acesso do servidor de back-end exibirão diversas requisições provenientes de endereços IP no intervalo 100.64.0.0/10.

Para garantir a conectividade adequada entre a instância do ALB e os serviços de back-end, certifique-se de que o iptables ou outro software de segurança de terceiros nas instâncias ECS de back-end não bloqueie o bloco CIDR do vSwitch da instância do ALB ou o intervalo de endereços 100.64.0.0/10.

Obtenção do IP do cliente com WAF, CDN ou GA

Se o tráfego passar por serviços como Web Application Firewall (WAF), Content Delivery Network (CDN) ou Global Accelerator (GA) antes de chegar ao ALB, você também poderá obter o IP real do cliente no campo X-Forwarded-For. Esses produtos encaminham esse cabeçalho por padrão e não exigem configuração adicional.

Para evitar falsificação do X-Forwarded-For, use outros cabeçalhos HTTP para registrar o IP real do cliente:

  • Use o cabeçalho Ali-Cdn-Real-Ip do Alibaba Cloud CDN. A arquitetura é Cliente > CDN > WAF > ALB > ECS.

    1. Por padrão, o CDN adiciona o cabeçalho de requisição Ali-Cdn-Real-Ip às requisições encaminhadas ao servidor de origem. Esse cabeçalho transmite o endereço IP real do cliente conectado ao ponto de presença (POP) do CDN.

    2. Ao integrar com o WAF, selecione Ali-Cdn-Real-Ip como cabeçalho personalizado para detecção do IP do cliente.

    3. Configure a variável de log $http_Ali_Cdn_Real_Ip no servidor Nginx de back-end para obter o IP real do cliente desse campo.

  • Use a ação Insert Header em uma regra de encaminhamento do listener do ALB para adicionar um cabeçalho HTTP (par chave-valor) à requisição. A arquitetura é Cliente > GA > ALB > ECS.

    1. Na regra de encaminhamento do listener do ALB, defina a Action como Insert Header. Neste exemplo, a chave é client-real-ip e o valor é definido como System-defined - Client IP Address.

    2. Para o listener, ative Retrieve Client IP e adicione os GA endpoint's public egress IP addresses à lista de endereços IP confiáveis.

    3. Configure a variável de log $http_client_real_ip no servidor Nginx de back-end para obter o IP real do cliente desse campo.

Obtenção do IP do cliente em um ambiente ACK

Para mais informações, consulte Configure ALB instances by using AlbConfig.

Como permitir que Nginx ou Apache obtenham diretamente o IP real do cliente (substituindo o endereço da camada de conexão)

Nginx

Por padrão, $remote_addr nos logs do Nginx registra o IP de encaminhamento do ALB (IP local). Para substituí-lo pelo IP real do cliente e garantir que logs e regras de controle de acesso existentes funcionem sem modificações, use o módulo ngx_http_realip_module:

  1. Execute nginx -V | grep http_realip_module para verificar se o módulo está instalado.

  2. No arquivo de configuração (padrão: /etc/nginx/nginx.conf), adicione o seguinte ao bloco http:

    set_real_ip_from  <vSwitch CIDR block of the instance>;
    real_ip_header    X-Forwarded-For;
    real_ip_recursive on;
    Se você usar uma instância do ALB não atualizada, defina set_real_ip_from como 100.64.0.0/10 .
  3. Execute sudo nginx -t para verificar a sintaxe e, em seguida, execute sudo nginx -s reload para recarregar a configuração.

Após a configuração entrar em vigor, verifique o log de acesso (padrão: /var/log/nginx/access.log ) para confirmar que $remote_addr agora exibe o IP real do cliente.
Se o tráfego passar por múltiplos proxies, como WAF ou CDN, adicione os intervalos de IP de origem de cada camada de proxy em set_real_ip_from .
As requisições de verificação de integridade não carregam o cabeçalho X-Forwarded-For , portanto, $remote_addr para essas requisições ainda exibirá o bloco CIDR do vSwitch da instância do ALB (ou 100.64.0.0/10 para instâncias não atualizadas). Esse comportamento é esperado.

Apache

Por padrão, %h nos logs do Apache registra o IP de encaminhamento do ALB (IP local). Para substituí-lo pelo IP real do cliente e garantir que logs e regras de controle de acesso Require ip existentes funcionem sem modificações, use o módulo nativo mod_remoteip do Apache 2.4:

  1. Execute httpd -M | grep remoteip_module para verificar se o módulo está instalado.

  2. No arquivo de configuração (padrão: /etc/httpd/conf/httpd.conf), adicione o seguinte:

    RemoteIPHeader       X-Forwarded-For
    RemoteIPTrustedProxy <vSwitch CIDR block of the instance>
    Se você usar uma instância do ALB não atualizada, defina RemoteIPTrustedProxy como 100.64.0.0/10 .
  3. Execute sudo systemctl restart httpd para reiniciar o Apache.

Após a configuração entrar em vigor, verifique o log de acesso (padrão: /var/log/httpd/access_log ) para confirmar que %h agora exibe o IP real do cliente.
Se o tráfego passar por múltiplos proxies, como WAF ou CDN, adicione os intervalos de IP de origem de cada camada de proxy em RemoteIPTrustedProxy .
As requisições de verificação de integridade não carregam o cabeçalho X-Forwarded-For , portanto, %h para essas requisições ainda exibirá o bloco CIDR do vSwitch da instância do ALB (ou 100.64.0.0/10 para instâncias não atualizadas). Esse comportamento é esperado.