Introdução:
Quando um cliente solicita acesso a determinado site, ele na realidade acessa o Proxy reverso, que redireciona a conexão para o Servidor Web, porém o IP da requisição que consta nos logs do Servidor Web é o do Proxy Reverso.Em algumas situações esse cenário não é adequado, como por exemplo, quando queremos liberar acesso à determinado endereço apenas para alguns IPs, ou em casos de auditoria. Para resolver a situação precisamos realizar as configurações no Nginx e no Apache.
Configurações no Nginx
Vou me ater apenas as opções que importam para o cenário proposto:location / {
proxy_pass http://<IP_Servidor_Web>;
.
.
.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Configurações no Apache
Para que o Apache entenda esses parâmetros ele precisa do módulo mod_remoteip.so, no caso do CentOS isso já é nativo:# yum provides /etc/httpd/modules/mod_remoteip.so
Plugins carregados: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.unicamp.br
* epel: mirror.globo.com
* extras: ftp.unicamp.br
* remi: remi.xpg.com.br
* remi-safe: remi.xpg.com.br
* updates: ftp.unicamp.br
httpd-2.4.6-67.el7.centos.6.x86_64 : Apache HTTP Server
Repo : @updates
Resultado a partir de:
Nome de arquivo : /etc/httpd/modules/mod_remoteip.so
O módulo já vai estar configurado para ser carregado automaticamente:
# grep remote * /etc/httpd/conf.modules.d/
00-base.conf:LoadModule remoteip_module modules/mod_remoteip.so
Mas precisamos realizar uma pequena alteração, acrescentando duas linhas:
# vi /etc/httpd/conf.modules.d/00-base.conf
LoadModule remoteip_module modules/mod_remoteip.so
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy <IP_Proxy/Máscara>
Precisamos também alterar o padrão de logs do Apache (%a):
# vi /etc/httpd/conf/httpd.conf
#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%v %a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
E reiniciar o Apache:
# systemctl restart httpd
Segue abaixo um exemplo do log gerado:
<Site_Solicitado> <IP_Origem> - - [14/May/2018:07:54:17 -0300] "GET ..." "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0"
É isso, espero que seja útil.
Referências:
Alpha Computer and Web ServicesServer Fault - Apache mod_remoteip and access logs