So begrenzen Sie die Zugriffshäufigkeit pro Zeiteinheit in Nginx

WBOY
Freigeben: 2023-05-15 13:43:06
nach vorne
795 Leute haben es durchsucht

Zunächst möchte ich sagen, dass ich auf dieses Problem gestoßen bin, weil die Website angegriffen wurde und Alibaba Cloud die Polizei alarmiert hat. Ich dachte darüber nach, die Zugriffshäufigkeit zu begrenzen, anstatt die IP-Adressen zu begrenzen (der Plan zur Beschränkung der IP-Adressen wird später bekannt gegeben). Wenn die Verbindungsressourcen erschöpft sind, gibt Nginx den Statuscode 502 zurück. Nach dem Hinzufügen der Einschränkungen dieser Lösung wird 599 zurückgegeben, was sich vom normalen Statuscode unterscheidet.
Die Schritte sind wie folgt:

Fügen Sie zunächst den folgenden Inhalt zu nginx.conf hinzu:

map $http_x_forwarded_for  $clientrealip {
    "" $remote_addr;
    ~^(?p<firstaddr>[0-9\.]+),?.*$  $firstaddr;
    }

    ###safe setting to limit the request number per second
    limit_req_status 599;
    limit_req_zone $clientrealip zone=allips:70m rate=5r/s;
Nach dem Login kopieren

Die Sitzungspoolgröße beträgt 70 m. Wenn es nur wenige eingeschränkte IPs gibt, können Sie sie verkleinern Sie müssen es erhöhen
5 Anfragen pro Sekunde, dies wird auch je nach Situation angepasst, 5 ist angemessener oder etwas größer.

Ändern Sie dann www.xxoo.com.conf (dies ist die Konfigurationsdatei von lnmp für jeden virtuellen Host). Fügen Sie auf dem Server die folgende Zeile über dem Speicherort hinzu:

limit_req zone=allips burst=5 nodelay;
Nach dem Login kopieren

Starten Sie auf diese Weise nginx neu und Sie können ein Skript schreiben um die Parallelität zu testen.

Ein gleichzeitiges Python-Skript wird wie folgt bereitgestellt:

import threading
import time,urllib2


url = &#39;http://sf.gg/&#39;
def worker():
  try:
   response = urllib2.urlopen(url)
   print response.getcode()
  except urllib2.httperror, e:
   print e.code

for i in range(2000):
  t = threading.thread(target=worker)
  t.start()
Nach dem Login kopieren

Sowohl 2000 als auch http://sf.gg/ können geändert werden. Führen Sie dann Python *.py > aus, um die Verteilung der Statuscodes in der Out-Datei zu analysieren , wenn 599 insbesondere sagt, dass die Frequenzgrenze eine Rolle spielt.

Das obige ist der detaillierte Inhalt vonSo begrenzen Sie die Zugriffshäufigkeit pro Zeiteinheit in Nginx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!