Estou executando um front-end do Nginx para arquivos estáticos e fazendo proxy para um back-end do Apache para PHP e Passenger, usando o mod_rpaf do Apache para definir o endereço IP remoto correto no back-end. Tudo funcionou bem até que eu atualizei para o Ubuntu 12.04 (Precise). Agora o Apache relata todas as conexões provenientes de 127.0.0.1.
Aqui está a configuração relevante. Nada aqui mudou com a atualização.
Nginx:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
mod_rpaf:
<IfModule mod_rpaf.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 ::1
RPAFheader X-Forwarded-For
</IfModule>
Estou usando %{X-Forwarded-For}i
minha diretiva Apache LogFormat e os logs de acesso estão mostrando o endereço remoto correto, então sei que o Nginx está passando o endereço corretamente.
Em um phpinfo()
teste, HTTP_X_FORWARDED_FOR está mostrando o endereço remoto correto, mas REMOTE_ADDR é 127.0.0.1. Isso também se reflete em aplicativos PHP, como comentários do WordPress.
Eu tentei mudar Nginx e mod_rpaf para X-Real-IP sem efeito.
Alguma coisa mudou que eu perdi?
Informações sobre a versão relevante, tudo instalado no repositório Ubuntu:
Nginx 1.1.19
Apache 2.2.22
mod_rpaf 0.6
mod_remoteip
vez demod_rpaf
.O mod_rpaf parece ter sido reprovado no Debian Jessie, e o desenvolvimento foi interrompido. Mude para mod_remoteip, que é um módulo padrão no Debian Jessie.
fonte
Apenas uma atualização para esta pergunta. O formato das variáveis que o mod_rpaf usa mudou - o Apache se recusará a iniciar com as listadas acima atualmente (RPAFenable, RPAFsethostname, RPAFproxy_ips, RPAFheader).
O novo formato é o seguinte:
fonte