Ich verwende ein Nginx-Frontend für statische Dateien und einen Proxy für ein Apache-Backend für PHP und Passenger. Dabei verwende ich Apaches mod_rpaf, um die richtige Remote-IP-Adresse im Backend festzulegen. Alles hat gut funktioniert, bis ich auf Ubuntu 12.04 (Precise) aktualisiert habe. Jetzt meldet Apache alle Verbindungen, die von 127.0.0.1 kommen.
Hier ist die entsprechende Konfiguration. Hier hat sich mit dem Upgrade nichts geändert.
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>
Ich verwende %{X-Forwarded-For}i
in meiner Apache LogFormat-Direktive und die Zugriffsprotokolle zeigen die richtige Remote-Adresse an, sodass ich weiß, dass Nginx die Adresse ordnungsgemäß weitergibt.
In einem phpinfo()
Test zeigt HTTP_X_FORWARDED_FOR die richtige Remote-Adresse an, REMOTE_ADDR ist jedoch 127.0.0.1. Dies spiegelt sich auch in PHP-Anwendungen wie WordPress-Kommentaren wider.
Ich habe versucht, Nginx und mod_rpaf ohne Wirkung auf X-Real-IP umzustellen.
Hat sich etwas geändert, das ich verpasst habe?
Relevante Versionsinformationen, alles aus dem Ubuntu-Repository installiert:
Nginx 1.1.19
Apache 2.2.22
mod_rpaf 0.6
mod_remoteip
anstelle von verwendenmod_rpaf
.mod_rpaf scheint in Debian Jessie veraltet zu sein, und die weitere Entwicklung wurde gestoppt. Wechseln Sie zu mod_remoteip, einem Standardmodul in Debian Jessie.
quelle
Nur ein Update zu dieser Frage. Das Format der Variablen, die mod_rpaf verwendet, hat sich geändert. Apache weigert sich, mit den oben aufgeführten Variablen zu beginnen (RPAFenable, RPAFsethostname, RPAFproxy_ips, RPAFheader).
Das neue Format lautet wie folgt:
quelle