Adiciona o cabeçalho HTTP X-Forwarder-For ao HAProxy

2

Eu uso HAProxy 1.3.26 no meu CentOS 5.8 para fazer proxy de todas as solicitações para um servidor dedicado. Eu uso o HAProxy apenas para proxy HTTP e HTTPS para um único servidor, então não há balanceamento de carga.

Meu haproxy.cfg é bastante simples:

global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        maxconn 4096
        user haproxy
        group haproxy
        daemon

defaults
        log global
        option dontlognull
        option httpclose
        option forwardfor
        clitimeout 60000
        srvtimeout 60000
        contimeout 5000
        retries 3
        option redispatch

listen http 192.168.0.1:80
        mode tcp
        option tcplog
        maxconn 10000
        server web01 192.0.1.13:80 maxconn 5000

listen https 192.168.0.1:443
        mode tcp
        maxconn 10000
        server web01 192.0.1.13:443 maxconn 5000

onde:

192.168.0.1 - server where HAProxy is installed
192.0.1.13  - server to which HTTP requests are forwarded

Eu gostaria de ver os endereços IP dos clientes em meus Apache 2.2.3 logs de acesso. Essa opção geralmente é obtida adicionando o cabeçalho HTTP X-Forwarded-For e, em seguida, lendo-o nos logs do servidor da web. Então, adicionei as seguintes linhas ao httpd.conf:

LogFormat "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" combined_forwarded
SetEnvIfNoCase X-Forwarded-For "." from_proxy=1
CustomLog logs/access_log combined env=!from_proxy
CustomLog logs/access_log combined_forwarded env=from_proxy

O problema é que o único endereço IP registrado é 192.168.0.1 (servidor HAProxy). Eu tentei configurações diferentes, leia documentação, pesquisei no Google, mas ainda não consigo entender porque os IPs dos clientes não estão conectados.

Eu sinto que estou sentindo falta de algo simples, pois as configurações são bem diretas. Por favor, ajude a corrigir as configurações, se possível.

Obrigado por qualquer ajuda.

    
por Andrew 18.05.2012 / 01:58

1 resposta

1

Por favor, não esqueça que isso não funcionará para o proxy https, já que o haproxy não conseguirá manipular o conteúdo de uma sessão criptografada. Você também pode querer verificar o módulo mod_rpaf para o Apache, o que torna tudo isso mais fácil.

    
por 18.05.2012 / 07:49

Tags