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