Exibindo o ip original no log do apache

Quando usamos apache com o proxy reverso como frontend na hora de exibir o log de acesso do apache por padrão vemos o ip do Proxy-reverso, e não o do cliente final.

Publicidade

Uma forma de arruma isso é utilizar a flag “X-Forwarded-For” presente no cabeçalho HTTP.

Vou mostrar o exemplo com apache e o servidor proxy reverso com nginx:

No arquivo /etc/apache2/apache2.conf edite a linha “LogFormat”, no lugar do %h coloque “%{X-Forwarded-For}i”, lembrando de verificar qual log está usando no seus vhost’s, no meu caso estou usando o “combined”:

 LogFormat “%v:%p %h %l %u %t \”%r\” %>s %O \”%{Referer}i\” \”%{User-Agent}i\”” vhost_combined
LogFormat “%v:%p %{X-Forwarded-For}i %c %l %u %t \”%r\” %>s %O \”%{Referer}i\” \”%{User-Agent}i\”” combined

Agora na configuração de proxy do nginx você deve colocar a Flag X-Forwareded-For:

location / {
proxy_pass https://127.0.0.1:4433;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# configurações de cache
proxy_cache portalhortolandia;
add_header X-Proxy-Cache $upstream_cache_status;

}

 

Reinicie o serviço do Nginx e do apache e verifique o log do apache para ver se o ip original está aparecendo.