Übergeben der realen IP-Adresse von einer Nginx-Instanz an eine andere und Schreiben in die Protokolle

Übergeben der realen IP-Adresse von einer Nginx-Instanz an eine andere und Schreiben in die Protokolle

Durch Verschieben einer Anfrage auf meinen internen Nginx-Server füge ich dem Aufruf hinzu:

proxy_set_header X-Real-IP $remote_addr;

wenn ich versuche, diesen Wert in das Protokoll auszudrucken, stürzt der interne Nginx-Container ab:

log_format verbose ' Real: $X-Real-IP ';

Was mache ich falsch? (Ich habe es auch mit "" um die Variable versucht, das hat nicht geholfen.)

Antwort1

Der Server empfängt X-Real-IPeinen der Header in der HTTP-Anforderung. Nginx stellt jeden der Anforderungsheaderwerte als Variable zur Verfügung.

Der Variablenname für HTTP-Anforderungsheaderwerte beginnt mit $http_. Der Headername wird in Kleinbuchstaben umgewandelt und jeder Bindestrich durch einen Unterstrich ersetzt.

Erhältlich ist es beispielsweise X-Real-IPals$http_x_real_ip

Sehendieses Dokumentfür Details.

Antwort2

Damit kann ngx_http_realip_moduleNginx die IP-Adresse in Headern überall innerhalb von Nginx als Quell-IP verwenden.

Es ist wie folgt konfiguriert:

set_real_ip_from 192.168.1.1 # IP address of the external nginx
real_ip_header X-Real-IP;

Durch die Verwendung dieses Moduls ist es nicht erforderlich, eigene Protokollformate zu definieren, nginx gibt die echte Client-IP in Protokolldateien und an allen anderen Stellen als Quell-IP-Adresse aus.

verwandte Informationen