J'exécute un front-end Nginx pour les fichiers statiques et je procède à un proxy pour un backend Apache pour PHP et Passenger, en utilisant mod_rpaf d'Apache pour définir la bonne adresse IP distante sur le backend. Tout a bien fonctionné jusqu'à ce que je passe à Ubuntu 12.04 (Precise). Apache signale maintenant toutes les connexions provenant de 127.0.0.1.
Voici la configuration appropriée. Rien ici n'a changé avec la mise à niveau.
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>
J'utilise %{X-Forwarded-For}i
dans ma directive Apache LogFormat et les journaux d'accès affichent l'adresse distante correcte, donc je sais que Nginx transmet l'adresse correctement.
Dans un phpinfo()
test, HTTP_X_FORWARDED_FOR affiche l'adresse distante correcte, mais REMOTE_ADDR est 127.0.0.1. Cela se reflète également dans les applications PHP, telles que les commentaires WordPress.
J'ai essayé de passer Nginx et mod_rpaf à X-Real-IP sans effet.
Quelque chose a-t-il changé que j'ai manqué?
Informations de version pertinentes, tout installé à partir du référentiel Ubuntu:
Nginx 1.1.19
Apache 2.2.22
mod_rpaf 0.6
mod_remoteip
place demod_rpaf
.mod_rpaf semble avoir été déprécié dans Debian Jessie et son développement a été interrompu. Basculez vers mod_remoteip, qui est un module par défaut dans Debian Jessie.
la source
Juste une mise à jour de cette question. Le format des variables utilisées par mod_rpaf a changé - Apache refusera de commencer avec celles listées ci-dessus actuellement (RPAFenable, RPAFsethostname, RPAFproxy_ips, RPAFheader).
Le nouveau format est le suivant:
la source