problemy mod_rpaf z frontem Nginx, back-endem Apache po aktualizacji Ubuntu

10

Korzystam z interfejsu Nginx dla plików statycznych i łączę się z zapleczem Apache dla PHP i Pasażera, używając mod_rpaf Apache do ustawienia poprawnego zdalnego adresu IP na zapleczu. Wszystko działało dobrze, dopóki nie uaktualniłem do Ubuntu 12.04 (Precyzyjne). Teraz Apache zgłasza wszystkie połączenia pochodzące z wersji 127.0.0.1.

Oto odpowiednia konfiguracja. W tej aktualizacji nic się nie zmienił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>

Używam %{X-Forwarded-For}iw mojej dyrektywie Apache LogFormat, a dzienniki dostępu pokazują poprawny adres zdalny, więc wiem, że Nginx poprawnie przekazuje adres.

W phpinfo()teście HTTP_X_FORWARDED_FOR pokazuje poprawny adres zdalny, ale REMOTE_ADDR to 127.0.0.1. Znajduje to odzwierciedlenie również w aplikacjach PHP, takich jak komentarze WordPress.

Próbowałem zmienić Nginx i mod_rpaf na X-Real-IP bez efektu.

Czy coś się zmieniło, co przeoczyłem?

Istotne informacje o wersji, wszystko zainstalowane z repozytorium Ubuntu:

Nginx 1.1.19
Apache 2.2.22
mod_rpaf 0.6

Kenn
źródło

Odpowiedzi:

10

Właśnie sobie z tym poradziłem. W piątek potwierdzono błąd Ubuntu. Możesz ponownie zacząć działać, zmieniając:

<IfModule mod_rpaf.c>

do

<IfModule mod_rpaf-2.0.c>

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

odrzutowiec
źródło
Miałem dokładnie ten sam problem po aktualizacji do 12.04 i straciłem pół dnia na problem, zanim znalazłem ten post. Dziękuję Ci!
Kouber Saparev,
1
Ta poprawka nie będzie już obowiązywać dla każdego, kto przyjdzie na ten post po aktualizacji do 14.04; zamiast tego będziesz chciał użyć mod_remoteipzamiast mod_rpaf.
Stefan Magnuson
1

mod_rpaf wydaje się być przestarzały w Debian Jessie, a dalszy rozwój został zatrzymany. Przełącz się na mod_remoteip, który jest domyślnym modułem w Debian Jessie.

Kirrus
źródło
0

Tylko aktualizacja tego pytania. Zmieniono format zmiennych używanych przez mod_rpaf - Apache odmówi uruchomienia z tymi wymienionymi obecnie (RPAFenable, RPAFsethostname, RPAFproxy_ips, RPAFheader).

Nowy format jest następujący:

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
źródło