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}i
w 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
mod_remoteip
zamiastmod_rpaf
.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.
źródło
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:
źródło