2016-07-04 15 views
1

Ich bin ein Nginx-Neuling und ich brauche Hilfe. =]Nginx - Wie alle IPs außer einem zu blockieren

Ich habe eine Liste von IPs enthalten in "$ proxy_add_x_forwarded_for", die IPs enthält, getrennt durch Kommas in diesem Format: "IP, Next IP".

Ich möchte einen 403 Fehlercode zurückgeben, wenn MY IP nicht in dieser durch Komma getrennten Liste ist.

Ich dachte, der einfachste Weg, eine einfach zu tun zu tun, wäre es, wenn Aussage zu sagen: Wenn $ proxy_add_x_forwarded_for nicht meine IP-Rückkehr 403.

versucht Nachdem dies für Alter nicht enthält kann ich nichts bekommen um zu arbeiten, kann mir jemand helfen? Es hört sich so an, als sollte das wirklich einfach sein.

Bearbeiten: Auch ich versuche, dies innerhalb der Standort-Block einrichten, da es andere Konfigurationen mit dem Nginx und die IP-Beschränkung ist nur für diesen bestimmten Block gültig.

Antwort

1

Unter der Annahme, dass Ihre IP-Adresse ist 123.123.123.123, dann die folgende Anweisung 403 zurück, wenn Ihre IP-Adresse nicht vorhanden ist:

if ($proxy_add_x_forwarded_for !~ \b123\.123\.123\.123\b) { return 403; } 

Es nutzt die \b metacharacter Wortgrenzen zu erzwingen (die Ziffern enthält) damit die komplette IP-Adresse getestet wird.

Sie können den Ausdruck in einen Positionsblock einfügen, wenn Sie den Bereich verkleinern müssen.

Die if Direktive ist documented here. Siehe this caution zur Verwendung der if Richtlinie. Eine nützliche Ressource für reguläre Ausdrücke ist .