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-IP
einen 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-IP
als$http_x_real_ip
Sehendieses Dokumentfür Details.
Antwort2
Damit kann ngx_http_realip_module
Nginx 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.