Der Nginx Proxy Manager macht wenn es um Reverse Proxy geht eine super Arbeit. Allerdings verschleiert er für die dahinter liegenden System auch sehr gerne die IP-Adressen und aufgerufenen URLs. Wenn man Statistiken haben möchte auf der Webseite, braucht man diese Daten aber. Die Lösung ist relativ einfach, wir leiten diese Informationen einfach weiter und das im HTTP Header. Im Hintergrund ließt der Apache Webserver diese Daten wieder aus und kann endlich seinen Job machen.
NGINX Proxy Manager Konfiguration
Im NGINX Proxy Manager fügen wir in den Domain Einstellungen im Reiter Advanced einfach folgendes hinzu.
proxy_read_timeout 300; proxy_pass_header X-Transmission-Session-Id; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Damit werden die Informationen im Header gespeichert und dann weiter an den Zielhost geleitet. In unserem Falle ist das ein Apache2 Webserver. Diesem Webserver müssen wir jetzt allerdings erstmal beibringen diese Daten auch auszulesen und zu verwerten.
Apache2 Webserver Konfiguration X-Forward-For
Der Apache2 kann erstmal damit nichts anfangen und muss dieses Weiterleiten erstmal lernen. Dafür brauchen wir ein zusätzliches Apache Modul. Das Modul mod_remoteip müssen wir zunächst aktivieren.
sudo a2enmod remoteip
Jetzt fügen wir noch jedem für virtuellen Server welcher das können soll diese Header Informationen hinzu. In euren ../apache2/site-available Ordnern verstecken sich eure Konfigurationen. Da es zig verschiedenen Lösungen gibt, verweise ich euch auf die Grundinformationen. Folgendes muss die zwischen <virtualhost> HIER HIN </virtualhost>Parameter. Bei RemoteIPInternalProxy müsst Ihr die IP-Adresse vom NGINX Proxy Manager eintragen.
<virtualhost> ### ### RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy IP-VON-EUREM-NGINX-MANAGER SetEnvIf X-Forwarded-Proto "^https$" HTTPS=on ### ### </virtualhost>
sudo service apache2 restart
Das wars auch schon, jetzt sollte euer Webserver wieder Daten wie IP Adressen und URLs im Hintergrund erhalten.
20. Februar 2022 um 20:13 Uhr
Hallo,
Ich möchte dir herzlich danken für diese Ërklarung. Ich habe genau diese Konfiguration gesucht, da ich im Apache Backend geoip konfiguriert habe und ich gerne auf NPM umsteigen möchte. Habe Wochen gesucht und jetzt endlich gefunden! ?
Sander.
21. Februar 2022 um 14:37 Uhr
Also bei mir muss ich statt „$host“ „$server“ angeben.
28. Oktober 2023 um 11:17 Uhr
Erst einmal danke für den Blogpost!
Allerdings hilft bei mir die Einstellung im NPM nicht. Weil ich Nextcloud per Docker benutze, kann ich hier auch keine Konfiguration am Apache vornehmen.
Es wundert mich, dass das bei dem Autor überhaupt funktioniert, weil ja schließlich unter „Advanced“ steht, dass set_header dort nicht funktioniert.
5. September 2024 um 13:57 Uhr
Leider funktioniert das bei mir so nicht. NPM möchte dass man das unter Custom Locations einstellt. Wie ist dabei vorzugehen?
11. November 2024 um 01:12 Uhr
Lieber Dennis,
ich bin immer wieder begeistert von Deinen prima Tipps und Tutorials!
Vielen Dank!!!