[dropcap]Q[/dropcap]uando usamos o nginx como proxy com o apache no backend, este passa a receber o ip do nginx como cliente de acesso. Como consequência o log e qualquer outra aplicação rodando nesse backend irá receber o mesmo ip. Para contornar o problema, o nginx possui o parâmentro HTTP X-Forwarded-For header que pegar o ip real do cliente.
[visibility visible_on=”desktop”][ad id=’1681′][/visibility]
[visibility visible_on=”device”][ad id=’1682′][/visibility]
No entanto, o Apache não resolve isso por padrão. Para o Apache reconhecer o ip original do cliente enviado pelo nginx é preciso instalar o módulo mod_rpaf.
Instalação
No Ubuntu basta instalar o pacote:
1 |
apt-get install libapache2-mod-rpaf |
Uma vez instalado, é preciso configurar o arquivo /etc/apache/mods-enable/mod_rpaf.conf alterando o parâmetro RPAFproxy_ips para o ip do nginx. Neste caso 127.0.0.1 .
1 2 3 4 5 |
<IfModule mod_rpaf.c> RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 </IfModule> |
Agora reinicie o apache para que ele receba o endereço de ip correto nos logs de acesso.
1 |
service apache2 restart |
[visibility visible_on=”desktop”][ad id=’1683′][/visibility]
[visibility visible_on=”device”][ad id=’1685′][/visibility]
Se por algum motivo não funcionar. Force o nginx adicionando os paramêtros abaixo:
1 2 3 |
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
Links:
https://www.nginx.com/resources/admin-guide/reverse-proxy/
http://nginx.org/en/docs/http/ngx_http_proxy_module.html