problèmes de mod_rpaf avec Nginx front, Apache back-end après la mise à niveau d'Ubuntu

10

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}idans 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

Kenn
la source

Réponses:

10

Je viens de m'en occuper moi-même. Vendredi, un bug Ubuntu a été confirmé. Vous pouvez remettre les choses en marche en modifiant:

<IfModule mod_rpaf.c>

à

<IfModule mod_rpaf-2.0.c>

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

jetboy
la source
J'ai eu exactement le même problème après la mise à niveau vers 12.04 et j'ai perdu une demi-journée sur le problème avant de trouver ce message. Je vous remercie!
Kouber Saparev
Et bug lui - même, pour être complet: bugs.launchpad.net/ubuntu/+source/libapache2-mod-rpaf/+bug/...
thor
1
Pour toute personne venant à ce poste après la mise à niveau vers 14.04, ce correctif ne s'appliquera plus; à la place, vous voudrez utiliser à la mod_remoteipplace de mod_rpaf.
Stefan Magnuson
1

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.

Kirrus
la source
0

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:

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
la source