2017-05-23 3 views
0

Ich habe schon viele Beiträge zu diesem Thema gelesen und mehrere Lösungen ausprobiert, aber keine funktionierende Lösung gefunden.REMOTE_ADDR IP vom Benutzer statt Nginx Reverse Proxy-Server

Ich habe einen Nginx Reverse Proxy vor meinem Apache Server eingerichtet. Wenn meine php Anwendung die REMOTE_ADDR Funktion benutzt, erhält sie die IP des Nginx Servers anstatt vom Benutzer.

Ich benutze Apache 2.4.10, so module_remoteip.c sollte installiert werden. Aber es ist nicht geladen.

Daher habe ich rpaf_module installiert. Es sieht so aus, als wäre dieses Modul korrekt installiert, wobei phpinfo() mod_rpaf-2 mit den geladenen Modulen angezeigt wird. Die I modifiziert, um die /etc/apache2/mods-available/rpaf.conf Datei mit folgendem Inhalt:

<IfModule rpaf_module> 
    RPAFenable On 
    RPAFsethostname On 
    RPAFproxy_ips 172.19.0.5 # ip of Nginx server 
    RPAFheader X-Forwarded-For 
</IfModule> 

Meine Nginx Konfiguration sieht wie folgt aus:

location/{ 
    proxy_set_header X-Real-Ip $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $host; 
    proxy_pass 172.19.0.4; 
} 

Hilfe ist willkommen?

Antwort

1

Die IP-Adresse des Besuchers sollte

$_SERVER['HTTP_X_REAL_IP']; 

statt

$_SERVER['REMOTE_ADDR']; 

mit zugänglich sein Wenn Sie den REMOTE_ADDR Header ersetzen möchten, versuchen Sie dies in Ihrer NGINX Konfiguration: (Und don‘ t vergessen sie ihren NGINX-server neu zu laden/neustarten)

location/{ 
    proxy_set_header X-Real-Ip $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $host; 
    proxy_set_header REMOTE_ADDR $remote_addr; 
    proxy_pass 172.19.0.4; 
} 
+0

Das ist richtig, nur will ich nicht modifizieren mein Symfony2-Quellcode und halte diesen Code-Standard. – Tom

+0

@Tom Ich aktualisierte meine Antwort. – thepieterdc

+0

Nachdem ich zu Ihrem Beispiel gewechselt und Nginx & Apache zurückgesetzt habe, bekomme ich immer noch die Nginx IP-Adresse. – Tom