Apache mod_remoteip e logs de acesso

8

Desde o Apache 2.4 eu comecei a usar mod_remoteip ao invés de mod_extract_forwarded para reescrever o endereço do cliente de x-forwarded-for fornecido pelos servidores frontend (verniz, squid, apache, etc).

Até agora, tudo funciona bem com os módulos, ie php, cgi, wsgi etc ... - os endereços dos clientes são mostrados como deveriam, mas não consegui escrever o endereço do cliente nos logs de acesso (% a,% h, % {c} a). Sem sorte - estou sempre recebendo 127.0.0.1 (localhost forward ex.).

Como registrar o endereço IP do cliente ao usar o mod_remoteip?

Atualização: FUNCIONA O_O - veja a resposta abaixo

    
por GioMac 29.07.2014 / 22:44

2 respostas

18

configuração de verniz:

if (req.restarts == 0) {
    if (req.http.X-Forwarded-For) {
        set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
    } else {
        set req.http.X-Forwarded-For = client.ip;
    }
}

seções de configuração do apache 2.4:

mod_remoteip:

RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1/8

registro (% a faz o trabalho):

LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

+

se houver um nginx na frente (ex. terminação SSL):

server {
    listen       123.123.123.123:443;
    server_name  server.com;
    root         html;

    ssl                  on;
    ssl_certificate      /etc/pki/httpd/site/chain.crt;
    ssl_certificate_key  /etc/pki/httpd/site/private.key;

    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    location / {
        proxy_pass   http://127.0.0.1:6081;
        proxy_set_header Host $http_host;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}
    
por 26.08.2014 / 00:19
3

De acordo com a documentação do mod_remoteip , o módulo deve simplesmente substituir o endereço IP do cliente, mas somente quando RemoteIPHeader x-forwarded-for está definido ( doc ). Certifique-se também de que o logging do seu vhost faz uso do CustomLog que você definiu.

    
por 25.08.2014 / 12:30