masalah mod_rpaf dengan bagian depan Nginx, Apache back-end setelah peningkatan Ubuntu

10

Saya menjalankan front-end Nginx untuk file statis, dan proksi ke backend Apache untuk PHP dan Penumpang, menggunakan mod_rpaf Apache untuk mengatur alamat IP jarak jauh yang benar di backend. Semuanya bekerja dengan baik sampai saya upgrade ke Ubuntu 12.04 (Precise). Sekarang Apache melaporkan semua koneksi yang berasal dari 127.0.0.1.

Inilah konfigurasi yang relevan. Tidak ada yang berubah di sini dengan peningkatan.

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>

Saya menggunakan %{X-Forwarded-For}idirektif Apache LogFormat saya dan log akses menunjukkan alamat jarak jauh yang benar, jadi saya tahu Nginx meneruskan alamat dengan benar.

Dalam phpinfo()pengujian, HTTP_X_FORWARDED_FOR menampilkan alamat jarak jauh yang benar, tetapi REMOTE_ADDR adalah 127.0.0.1. Ini tercermin dalam aplikasi PHP juga, seperti komentar WordPress.

Saya sudah mencoba mengganti Nginx dan mod_rpaf ke X-Real-IP tanpa efek.

Apakah ada perubahan yang saya lewatkan?

Info versi yang relevan, semua yang diinstal dari repositori Ubuntu:

Nginx 1.1.19
Apache 2.2.22
mod_rpaf 0.6

Kenn
sumber

Jawaban:

10

Baru saja berurusan dengan ini. Ada bug Ubuntu yang dikonfirmasi pada hari Jumat. Anda bisa membuat semuanya berfungsi kembali dengan mengubah:

<IfModule mod_rpaf.c>

untuk

<IfModule mod_rpaf-2.0.c>

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

pesawat jet
sumber
Saya memiliki masalah yang persis sama setelah memutakhirkan ke 12,04 dan kehilangan setengah hari pada masalah sebelum menemukan posting ini. Terima kasih!
Kouber Saparev
Dan bug itu sendiri, untuk kelengkapan: bugs.launchpad.net/ubuntu/+source/libapache2-mod-rpaf/+bug/…
thor
1
Bagi siapa pun yang datang ke pos ini setelah memutakhirkan ke 14,04 perbaikan ini tidak akan berlaku lagi; sebagai gantinya Anda akan ingin menggunakan mod_remoteipsebagai gantinya mod_rpaf.
Stefan Magnuson
1

mod_rpaf tampaknya sudah usang di Debian Jessie, dan pengembangan lebih lanjut dihentikan. Beralih ke mod_remoteip, yang merupakan modul default di Debian Jessie.

Kirrus
sumber
0

Hanya pembaruan untuk pertanyaan ini. Format variabel yang digunakan mod_rpaf telah berubah - Apache akan menolak untuk memulai dengan yang tercantum di atas saat ini (RPAFenable, RPAFsethostname, RPAFproxy_ips, RPAFheader).

Format baru adalah sebagai berikut:

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
sumber