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}i
direktif 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
mod_remoteip
sebagai gantinyamod_rpaf
.mod_rpaf tampaknya sudah usang di Debian Jessie, dan pengembangan lebih lanjut dihentikan. Beralih ke mod_remoteip, yang merupakan modul default di Debian Jessie.
sumber
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:
sumber