2016-03-28 9 views
8

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

10

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.

+0

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

+0

Ich sehe, es ersetzt die Proxy-IP mit der Herkunft IP. Vielen Dank. – mahemoff

+1

Ja. Entschuldigung für das Durcheinander eines Kommentars. Mein ursprünglicher Beitrag wurde aktualisiert. – ngraves