Apache Proxypass: Wie ursprüngliche IP-Adresse erhalten
Frage
Wir Proxypass verwenden alle "/ r" Anfragen zu umleiten auf Port 18080 auf jboss wie folgt:
ProxyPreserveHost on
ProxyPass /r http://localhost:18080/redirectService/
ProxyPassReverse /r http://localhost:18080/redirectService/
Aber, dass die IP-Adresse in jboss des Zugriffsprotokoll als „127.0.0.1“ angemeldet verursacht. Kennt jemand wie können wir die ursprüngliche IP aus bewahren, wo die Anfrage kam in HttpServletRequest? Wir wollen es acesss von Jboss Servlet-Anfrage in doGet ()
Lösung
Sie können die Original-Host von X-Forwarded-For Header-Feld .
Andere Tipps
Die Antwort von JasonW ist in Ordnung. Aber da Apache 2.4.6 gibt es eine Alternative: mod_remoteip
Alles, was Sie tun müssen, ist:
- Mai werden Sie das mod_remoteip Paket installieren müssen
-
Sie das Modul aktivieren:
LoadModule remoteip_module modules/mod_remoteip.so
-
Fügen Sie folgendes zu Ihrem Apache Config. Beachten Sie, dass Sie diese Zeile hinzufügen müssen nicht in die Konfiguration des Proxy-Servers. Sie müssen Fügen Sie diese auf die Konfiguration des Proxy-Ziel-httpd-Server (der Server hinter dem Proxy):
RemoteIPHeader X-Forwarded-For
Sehen Sie unter http://httpd.apache.org/docs/trunk/mod/mod_remoteip.html für weitere Informationen und weitere Optionen.
Dies hat eine elegantere Erklärung und mehr als eine mögliche Lösungen. http://kasunh.wordpress.com/2011 / 10/11 / Konservierungs-remote-IPHost-while-Proxying /
Der Beitrag beschreibt, wie man verwenden beliebt und eine weniger bekannte Apache-Module Host / IP zu erhalten, während in einem Setup-Proxying beteiligt ist.
Mit Mod_rpaf Modul installieren und im Backend-Server aktivieren, und fügen Sie folgende Richtlinien in der Konfiguration des Moduls. RPAFenable
RPAFsethostname
RPAFproxy_ips 127.0.0.1
(2017 edit) Gegenwärtiger Standort Mod_rpaf: https://github.com/gnif/mod_rpaf
Wenn Sie die Möglichkeit haben, dies zu tun, würde ich empfehlen, entweder mod-jk oder mod-proxy-AJP Anfragen von Apache zu JBoss passieren. Das AJP-Protokoll ist viel effizienter im Vergleich zu HTTP-Proxy-Anforderungen mit und als Vorteil, JBoss wird die Anfrage als von dem ursprünglichen Client und nicht Apache sehen.
Wenn Sie Apache Reverse Proxy verwenden für die Bedienung einer App auf einem lokalen Host-Port laufen Sie einen Speicherort auf Ihrem vhost hinzufügen.
<Location />
ProxyPass http://localhost:1339/ retry=0
ProxyPassReverse http://localhost:1339/
ProxyPreserveHost On
ProxyErrorOverride Off
</Location>
Um die IP-Adresse hat folgende Optionen
console.log(">>>", req.ip);// this works fine for me returned a valid ip address
console.log(">>>", req.headers['x-forwarded-for'] );// returned a valid IP address
console.log(">>>", req.headers['X-Real-IP'] ); // did not work returned undefined
console.log(">>>", req.connection.remoteAddress );// returned the loopback IP address
Also entweder Gebrauch req.ip oder req.headers [ 'x-forwarded-for']