Analyse der Implementierung der Nginx Rush-Kaufstrombegrenzungskonfiguration

Analyse der Implementierung der Nginx Rush-Kaufstrombegrenzungskonfiguration

Aus geschäftlichen Gründen kommt es häufig zu Eilkäufen, daher ist es notwendig, die Fehlerhäufigkeit am Frontend des Lastausgleichs zu begrenzen. Dieser Artikel gilt auch für die Vorbeugung von CC.

  limit_req_zone $server_name zone=sname:10m rate=1r/s; #Beschränken Sie den Server auf nur einen erfolgreichen Zugriff pro Sekunde #limit_req_zone $binary_remote_addr zone=one:3m rate=1r/s; #Beschränken Sie IP, nur ein Zugriff pro Sekunde #limit_req_zone $binary_remote_addr $uri zone=two:3m rate=1r/s; #Beschränken Sie IP und Pfad ohne Parameter,
    #limit_req_zone $binary_remote_addr $request_uri zone=thre:3m rate=1r/s; #IP und Pfad mit den Parametern server { begrenzen
    hören Sie 80;
    Servername www.abc.com;
    Standort / {
        host/proxy.cnf einschließen;
        Proxy-Passwort http://backend;
    }
    Standort /api/createOrder {
        limit_req zone=sname; #Kein Burst, nur eine normale Anfrage limit_req_status 503; #Setze den zurückgegebenen Statuscode auf 503
        #limit_req zone=sname burst=5 nodelay; #Die maximale Parallelität beträgt 5 und die Echtzeitverarbeitung umfasst host/proxy.cnf;
        Proxy-Passwort http://backend;
        error_page 503 =200 /50x.html; #Das ist sehr wichtig. Sie können den Fehlerstatuscode auf 503 setzen und das Ergebnis als 200 zurückgeben
    }
    Standort = /50x.html {
        if ($http_user_agent ~* "mobile|android|iPhone|iphone|ios|iOS"){
            #Standardtyp Anwendung/json;
            return 200 '{"msg": "Die Veranstaltung ist zu beliebt, bitte versuchen Sie es später noch einmal!","data": {},"code": -1}'; #Stellen Sie das mobile Endgerät so ein, dass eine Fehlermeldung angezeigt wird}
        root html; #Wenn es ein PC ist, gib eine HTML-Seite zurück}
    }

Wichtiger Punkt: Unter normalen Umständen lautet der zurückgegebene Statuscode 503, wenn das aktuelle Limit festgelegt ist. Selbst wenn Sie für das mobile Endgerät JSON-Daten zurückgeben, erkennt der Client diese nicht. Zu diesem Zeitpunkt können Sie den Statuscode geschickt über error_page 403 =200 /50x.html auf 200 setzen.

Oben wird nur das Modul ngx_limit_req_module verwendet. Das Modul ngx_limit_conn_module kann ebenfalls verwendet werden.

Referenz: https://gist.github.com/simlegate/75b18359316cc33d8e20

Insbesondere wenn einige Beratungswebsites das Ziel von Crawlern sind, kann der Server von den Crawlern zerstört werden (dies ist bei kleinen Websites der Fall).
Was können wir also tun? Wir können Variablen verwenden, um

#Globale Konfiguration limit_req_zone $spider zone=spider:60m rate=200r/m; #Beschränken Sie den Crawler auf 200 Ausführungen pro Minute #In einem Server limit_req zone=spider burst=5 nodelay;
if ($http_user_agent ~* "spider|bot") {
  set $spider $http_user_agent; #Variablen festlegen und die Geschwindigkeit begrenzen, wenn Sie hier eintreten}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Nginx-Strombegrenzungskonfiguration
  • Detaillierte Erläuterung der Verbindungslimitkonfiguration von Nginx für IP-Adressen in einem Netzwerksegment
  • Praktische Aufzeichnung der aktuellen Einschränkungen und des Konfigurationsmanagements von Nginx

<<:  Wie implementiert Vue die Kommunikation zwischen Komponenten?

>>:  Ursachenanalyse und Lösung des E/A-Fehlers beim Löschen einer MySQL-Tabelle

Artikel empfehlen

Detaillierte Erklärung langer Transaktionsbeispiele in MySQL

Vorwort: Die Artikelserie „Erste Schritte mit MyS...

Details zur Verwendung von Klassenstilen in Vue

Inhaltsverzeichnis 1. Boolesche Werte 2. Ausdruck...

Detaillierte Erklärung des Unterschieds zwischen Uniapp und Vue

Inhaltsverzeichnis 1. Einfaches Seitenbeispiel 2....

Wettersymbol-Animationseffekt implementiert durch CSS3

Ergebnisse erzielen Implementierungscode html <...

Import-, Export-, Sicherungs- und Migrationsvorgänge für Docker-Images

Export: docker save -o centos.tar centos:latest #...

Lösung für FEHLER 1366 bei der Eingabe von Chinesisch in MySQL

Beim Eingeben von Chinesisch in MySQL tritt der f...

Anweisungen zur Verwendung des Datenbankverbindungspools Druid

Ersetzen Sie ihn durch den optimalen Datenbankver...

So laden Sie Projekte im Linux-System in die Code Cloud hoch

Erstellen Sie ein neues Projekt test1 auf Code Cl...

Zusammenfassung der drei Regeln für die React-Statusverwaltung

Inhaltsverzeichnis Vorwort Nr.1 Ein Fokus Nr. 2 E...