Problemas do mod_rpaf com a frente do Nginx, back-end do Apache após a atualização do Ubuntu

10

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}iminha 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

Kenn
fonte

Respostas:

10

Eu só lidei com isso. Houve um bug do Ubuntu confirmado na sexta-feira. Você pode fazer as coisas funcionarem novamente alterando:

<IfModule mod_rpaf.c>

para

<IfModule mod_rpaf-2.0.c>

em /etc/apache2/mods-available/rpaf.conf

jetboy
fonte
Eu tive exatamente o mesmo problema após a atualização para o 12.04 e perdi meio dia no problema antes de encontrar este post. Obrigado!
Kouber Saparev
E bug propriamente dito, para completar: bugs.launchpad.net/ubuntu/+source/libapache2-mod-rpaf/+bug/…
thor
1
Para quem vem a este post após atualizar para o 14.04, essa correção não será mais aplicada; em vez disso, você desejará usar em mod_remoteipvez de mod_rpaf.
Stefan Magnuson
1

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.

Kirrus
fonte
0

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:

LoadModule              rpaf_module modules/mod_rpaf.so
RPAF_Enable             On
RPAF_ProxyIPs           127.0.0.1 10.0.0.0/24
RPAF_SetHostName        On
RPAF_SetHTTPS           On
RPAF_SetPort            On
RPAF_ForbidIfNotProxy   Off
Artem Russakovskii
fonte