Nginx unterstützt allow
und deny
Syntax, um IPs, z. allow 192.168.1.1;
. Wenn der Datenverkehr jedoch einen Reverse-Proxy durchläuft, verweist die IP auf die IP des Proxys. Wie kann es konfiguriert werden, eine bestimmte Ursprungs-IP-Adresse auf die Whitelist zu setzen und alle anderen eingehenden Anfragen abzulehnen?Nginx - Erlaube Herkunft IP
Antwort
remote_addr verweist auf den Proxy, aber Sie können den Proxy konfigurieren, um die Clientadresse mit den Headerfeldern X-Real-IP/X-Forwarded-For zu senden.
Kombiniert mit dem Modul ngx_http_realip können Sie den eingehenden Header so ändern, dass die reale Clientadresse für remote_addr verwendet wird. Ich glaube, das wird wie erwartet mit der allow/deny-Syntax funktionieren.
Nur zur Verdeutlichung - die Syntax für Zulassen/Verweigern sollte nach dem Aktivieren und Konfigurieren des Moduls identisch sein. Ersetzen Sie Ihre IP und Ihre Proxy-Adressen im Folgenden.
Back-End-nginx erlauben/verweigern:
location/{
allow <your ip>;
allow 127.0.0.1;
deny all;
}
Back-end nginx realip Konfiguration:
set_real_ip_from <your proxy>;
real_ip_header X-Forwarded-For;
Auf Ihrer nginx Proxy-Konfiguration:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Wenn Sie mehrere haben intermediate proxies beteiligt, müssen Sie real_ip_recursive aktivieren und zusätzliche Adressen mit whitelist h die Anweisung set_real_ip_from.
Danke - könnten Sie zeigen, wie die Config dafür aussehen würde, da die Modulseite nur zeigt, wie man die Variable bekommt, aber nicht zeigt, wie man auf die Whitelist setzt. – mahemoff
Ich sehe, es ersetzt die Proxy-IP mit der Herkunft IP. Vielen Dank. – mahemoff
Ja. Entschuldigung für das Durcheinander eines Kommentars. Mein ursprünglicher Beitrag wurde aktualisiert. – ngraves