it-swarm.com.de

Nginx - So leiten Sie Benutzer mit einer bestimmten IP auf eine spezielle Seite um

Ich betreibe eine ziemlich große Bildergalerie und es gibt 5 Besucher, die eine enorme Menge an Verkehr erzeugen, indem sie die gesamte Website jeden Tag mit Webcopiern herunterladen. Diese Besucher haben anscheinend statische IPs. Was ich erreichen möchte, ist, dass diese 5 IPs auf eine bestimmte Seite umgeleitet werden (was erklärt, warum ihr Verhalten problematisch ist), sobald sie die Site besuchen. Alle anderen Besucher sollten in der Lage sein, die Website normal zu durchsuchen.

Auf dem Server werden CentOS (5.8) und nginx (1.0.15) als Webserver ausgeführt. Gibt es eine Möglichkeit, dies durch einen Eintrag in der nginx.conf zu erreichen, den Sie kennen?

Vielen Dank im Voraus für Ihre Hinweise und Unterstützung!

Herzliche Grüße -Alex

27
Alex

Das Modul Geo entspricht den Clientadressen. Sie können es verwenden, um eine zu testende Variable wie folgt zu definieren:

geo $bad_user {
  default 0;
  1.2.3.4/32 1;
  4.3.2.1/32 1;
}

server {
  if ($bad_user) {
    rewrite ^ http://www.example.com/noscrape.html;
  }
}

Dies ist effizienter als das Ausführen eines regulären Ausdrucks für $ remote_addr und einfacher zu warten.

35
kolbyjack

Mit HttpAccessModule können Sie dies schnell erreichen.

server {
    if ($remote_addr = 1.2.3.4) {
        rewrite ^ http://www.website.com/noscrape.htm;
    }
   ...
}
20
user74078

Wenn Sie zu einer anderen Seite in derselben Domäne umgeleitet haben und den obigen Beispielen gefolgt sind, führt dies zu einer direkten Schleife. Verwenden Sie daher in Ihrer Nginx-Konfigurationsdatei Folgendes (ich nehme an, Sie verwenden wordpress, da es weit verbreitet ist).

geo $bad_user {
  default 0;
  1.2.3.4/32 1;
  4.3.2.1/32 1;
}

server {
 location /
 {
  if ($bad_user) {
    rewrite ^ http://www.example.com/warning-page/ break;
  }

try_files $fullurl${request_uri}index.html $uri $uri/ /index.php$is_args$args;
 }

location /warning-page/
{
try_files $fullurl${request_uri}index.html $uri $uri/ /index.php$is_args$args;
}

}

Wenn nun jemand von der IP auf der schwarzen Liste eine Seite außer der auf der Site nicht aufgelisteten Warnseite besucht hat, wird er auf die Warnseite weitergeleitet. Da sich das Umschreiben an der Position/im Block befindet, wird keine Umleitungsschleife verursacht. Befindet es sich jedoch innerhalb des Serverblocks, wird eine Umleitungsschleife ausgelöst.

2
Don Dilanga