Benutzer-IP hinter Load Balancer erfassen (Apache/Linux)
Bitte verwenden sie die "Drucken" Funktion am Seitenende, um ein PDF zu erstellen.
Für Cloud Server, VPS+, Dedicated Server und Bare Metal Server mit Linux und Apache HTTP Server
In diesem Artikel wird erklärt, wie Sie die originale Benutzer-IP hinter einem Load Balancer erfassen können, indem Sie den X-Forwarded-For-Header in der Apache-Konfiguration unter Linux berücksichtigen.
Befindet sich der Apache hinter einem Load Balancer, wird die eigentliche IP des Benutzers durch die IP des Load Balancers überschrieben. Im Apache-Logfile steht somit nur noch die Adresse des Load Balancers. Wir zeigen Ihnen, wie Sie unter gewissen Voraussetzungen auch die originale Benutzer-IP mitprotokollieren können.
Für diesen Fall gibt es im HTTP-Protokoll den X-Forward-For-Header. Dieser Header dient dazu, die IP-Adresse des Benutzers zu übermitteln, wenn dieser durch einen Proxy oder Load Balancer auf einen Webserver zugreift. Da der Apache diesen Header standardmäßig aber nicht berücksichtigt, muss hier die Apache-Konfiguration angepasst werden.
Hinweis
Technisch bedingt funktioniert die "Load Balancer"-seitige Übermittlung der IP - und damit die hier beschriebene Lösung - nur bei unverschlüsselten Zugriffen. Erfolgt der Aufruf hingegen via HTTPS, so kann kein Header-Eintrag erfolgen, da die Kommunikation zwischen Client und Webserver vollständig verschlüsselt abläuft (es ist nicht möglich, ein eigenes SSL-Zertifikat auf dem Load Balancer zu installieren).
So passen Sie die Protokollierungseinstellung des Apache zur Berücksichtigung des X-Forward-For-Headers an:
Fügen Sie in der Apache-Konfigurationsdatei apache2.conf (CentOS: httpd.conf) einen LogFormat-Eintrag mit der Variable %{X-Forwarded-For}i hinzu.
Ein Beispiel für eine LogFormat-Direktive (mit dem Namen "proxy"):LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" proxy
Fügen Sie für die gewünschten Domains in den Konfigurationsdateien der entsprechenden Virtual Hosts einen CustomLog-Eintrag hinzu.
Im folgenden Beispiel wird der Apache angewiesen, die Aufrufe über domain-tld in der Datei access.log mit dem Logformat "proxy" zu protokollieren:
<VirtualHost domain.tld:80>
.
#CustomLog logs/access.log combined
CustomLog logs/access.log proxy
.
</VirtualHost>
Führen Sie einen Neustart des Apache-Dienstes durch, damit die Änderung wirksam wird.