Estoy ejecutando un front-end Nginx para archivos estáticos, y proxy a un backend de Apache para PHP y Passenger, usando mod_rpaf de Apache para configurar la dirección IP remota correcta en el backend. Todo funcionó bien hasta que actualicé a Ubuntu 12.04 (Precise). Ahora Apache informa que todas las conexiones provienen de 127.0.0.1.
Aquí está la configuración relevante. Nada aquí cambió con la actualización.
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>
Estoy usando %{X-Forwarded-For}i
mi directiva Apache LogFormat y los registros de acceso muestran la dirección remota correcta, así que sé que Nginx está pasando la dirección correctamente.
En una phpinfo()
prueba, HTTP_X_FORWARDED_FOR muestra la dirección remota correcta, pero REMOTE_ADDR es 127.0.0.1. Esto también se refleja en las aplicaciones PHP, como los comentarios de WordPress.
Intenté cambiar Nginx y mod_rpaf a X-Real-IP sin ningún efecto.
¿Cambió algo que me perdí?
Información de versión relevante, todo lo instalado desde el repositorio de Ubuntu:
Nginx 1.1.19
Apache 2.2.22
mod_rpaf 0.6
mod_remoteip
lugar demod_rpaf
.Parece que mod_rpaf ha quedado en desuso en Debian Jessie, y el desarrollo posterior se detuvo. Cambie a mod_remoteip, que es un módulo predeterminado en Debian Jessie.
fuente
Solo una actualización de esta pregunta. El formato de las variables que utiliza mod_rpaf ha cambiado: Apache se negará a comenzar con las enumeradas anteriormente actualmente (RPAFenable, RPAFsethostname, RPAFproxy_ips, RPAFheader).
El nuevo formato es el siguiente:
fuente