Kürzlich bin ich bei der Verwendung des nginx-Reverse-Proxy-Dienstes auf ein Problem gestoßen: Ich möchte die Quell-IP-Adresse angeben, um die Weiterleitung von Anfragen zu erreichen, aber ich habe keine bessere Lösung gefunden. Nach einigen Erkundungen und Übungen habe ich einige Erfahrungen und Tipps zusammengefasst, die ich mit Ihnen teilen möchte.
Um den Zweck der Angabe der Quell-IP-Adresse zu erreichen, müssen wir zunächst verstehen, was nginx Reverse Proxy und die Quell-IP-Adresse sind. nginx Reverse Proxy bezieht sich auf den Empfang von Anfragen im Internet durch einen Proxy-Server und die anschließende Weiterleitung dieser Anfragen an einen Server im internen Netzwerk und die erneute Übermittlung des vom Server zurückgesendeten Inhalts an den Client der Internet-Anfrage. Die Quell-IP-Adresse ist die echte IP-Adresse des Clients, der die Anfrage stellt.
Die Konfiguration des nginx-Reverse-Proxys zur Angabe einer IP-Adresse erfordert die folgenden Überlegungen:
Wie erhält man die echte IP-Adresse des Clients?
Konfigurieren des nginx-Reverse-Proxys
Weiterleitung der Quell-IP-Adresse festlegen
Ermittlung der tatsächlichen IP-Adresse des Clients
Beim nginx-Reverse-Proxy führt das Vorhandensein eines Proxy-Servers dazu, dass die IP-Adresse der ursprünglichen Anfrage verborgen bleibt. Daher müssen wir die tatsächliche IP-Adresse des Clients über einige spezielle Header-Felder ermitteln. In der Konfiguration von nginx können wir die echte IP-Adresse des Clients an den Back-End-Server weitergeben, indem wir einige http-Anfrage-Header-Felder setzen. Die spezifische Konfiguration lautet wie folgt:
"nginx
Server {
hören 80.
server_name example.com.
Standort / {
proxy_pass http://backend_server.
proxy_set_header X-Real-IP $remote_addr.
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
“`
In der obigen Konfiguration setzen wir zwei http-Header-Felder, X-Real-IP und X-Forwarded-For, über die proxy_set_header-Direktive, um die echte IP-Adresse des Clients bzw. die IP-Adresse des Proxy-Servers zu übergeben.
Konfigurieren des nginx-Reverse-Proxys
Die Konfiguration des nginx-Reverse-Proxys ist sehr einfach: Fügen Sie einfach eine proxy_pass-Direktive in die nginx-Konfigurationsdatei ein. Hier ist ein einfaches Beispiel:
"nginx
Server {
hören 80.
server_name example.com.
Standort / {
proxy_pass http://backend_server.
}
}
“`
In der obigen Konfiguration haben wir die Anfrage des Clients für example.com über einen Reverse-Proxy an den Backend_server weitergeleitet.
Weiterleitung der Quell-IP-Adresse festlegen
Um die Weiterleitung mit einer bestimmten Quell-IP-Adresse zu implementieren, können wir das nginx-Modul ngx_http_realip_module verwenden, um die Quell-IP-Adresse der Anfrage zu ändern. Die spezifische Konfiguration lautet wie folgt:
"nginx
set_real_ip_from 192.168.1.0/24.
real_ip_header X-Real-IP.
real_ip_recursive ein;
“`
In der obigen Konfiguration geben wir mit der Direktive set_real_ip_from das Netzwerksegment an, in dem die Quell-IP-Adresse geändert werden darf, und geben dann mit der Direktive real_ip_header das HTTP-Header-Feld der Quell-IP-Adresse an, das geändert werden soll. Schließlich wird die real_ip_recursive-Direktive verwendet, um eine rekursive Suche nach Anfragen vom Proxy-Server zu ermöglichen, um sicherzustellen, dass die echte IP-Adresse des Clients korrekt ermittelt wird.
Zusammenfassungen
Mit den oben genannten Konfigurationen und Einstellungen können wir die Weiterleitung der angegebenen Quell-IP-Adresse im nginx-Reverse-Proxy erreichen. Zunächst erhalten wir die reale IP-Adresse des Clients durch Setzen des http-Header-Feldes, dann konfigurieren wir den Reverse-Proxy und verwenden das Modul ngx_http_realip_module, um die Weiterleitung der angegebenen Quell-IP-Adresse zu erreichen. Ich hoffe, dass die oben genannten Erfahrungen und Tipps für Sie hilfreich sein werden.