IP-Ursprung zum Nginx-Header hinzufügen

IP-Ursprung zum Nginx-Header hinzufügen

Ich habe eine Situation mit ip_hashnginx für Sticky Sessions, bei der der Datenverkehr immer nur an einen Server geleitet wird. nginx läuft hinter einem Google Cloud Load Balancer und erreicht von nginx aus den GC Kubernetes Load Balancer meiner App, bevor es tatsächlich an einen der Pods geht.

Ich denke, dass die IPs aller Benutzer vom GC-Load Balancer maskiert wurden, sodass Nginx sie als eine Quelle erkennt.

Mir wurde gesagt, dass wir die ursprüngliche IP des Benutzers zum Header von nginx hinzufügen können, damit der Load Balancer sie als unterschiedliche Benutzer erkennen kann. Wie kann ich einen solchen erreichen? Oder gibt es eine andere Lösung?

Antwort1

Wenn Sie Netzwerklastenausgleich (mit Zielpools) verwenden, behält der Load Balancer die IP. Was passiert, ist, dass Kubernetes dieQuell-IPmit den Cluster-/Knoten-IPs.

Kubernetes verfügt über eine Funktion zum Beibehalten der Client-Quell-IP. Sie können in den Dokumenten nachsehen fürSo bewahren Sie die Quell-IP des Clients in den Diensten mit Typ=LoadBalancer auf(Netzwerklastausgleich).

Antwort2

KonfigurierenSitzungsaffinitätbei der Erstkonfiguration einesZielpoolindem Sie es auf einen der folgenden Werte setzenNicht-Standardwerteum das gewünschte Maß anklebrige Sitzung:

CLIENT_IP

2-Tupel-Hashing, das die Quell- und Ziel-IPs verwendet. Alle Verbindungen von einem Client landen unabhängig vom Protokoll auf derselben Instanz, solange die Instanz intakt bleibt.

CLIENT_IP_PROTO

3-Tupel-Hashing, das die Quell- und Ziel-IPs und das Protokoll verwendet. Alle Verbindungen von einem Client landen auf derselben Instanz, solange sie dasselbe Protokoll verwenden und die Instanz intakt bleibt.

Lakshman Diwaakarbezeichnet die Konfiguration der Sitzungsaffinität als einen nicht veränderbaren Attributsatz"während der Erstellung von"ein Zielpool. Sein Überblick über die verfügbaren Cloud Compute-Lastausgleichsfunktionen könnte für Sie interessant sein:Netzwerk-Load Balancer vs. HTTP(s)-Load Balancer.

Antwort3

Verwenden Sie den Proxy_Set_Header, um Ihr IP-Original zum NGINX-Header hinzuzufügen. Sehen Sie sich die folgenden Beispiele an:

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-Host $remote_addr;

proxy_set_header X-Forwarded-For $remote_addr;

Auf die gleiche Weise können Sie Ihren IP-Ursprung zum NGINX-Header hinzufügen.

verwandte Informationen