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 Analyse des virtuellen Nginx-Hosts

Inhaltsverzeichnis 1. Virtueller Host 1.1 Virtuel...

CSS-Methode zum Löschen von Float und BFC

BFC BFC: Blockformatierungskontext BFC-Layoutrege...

MySQL-Integritätsbeschränkungen – Definition und Beispiel-Tutorial

Inhaltsverzeichnis Integritätsbeschränkungen Defi...

Analyse von Context-Anwendungsszenarien in React

Kontextdefinition und Zweck Der Kontext bietet ei...

Fassen Sie die häufigsten Anwendungsprobleme von XHTML-Code zusammen

<br />Ich habe festgestellt, dass viele Leut...

JavaScript zum Hinzufügen und Löschen von Nachrichten im Message Board

Dieser Artikel zeigt ein kleines Beispiel für das...

JavaScript zum Erreichen eines einfachen Message Board-Falls

Verwenden Sie Javascript, um ein Message Board-Be...

HTML-Auszeichnungssprache - Referenz

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

Beispielcode zum Konvertieren von HTML-Tabellendaten in das JSON-Format

Die Javascript-Funktion zum Konvertieren von <t...

Automatisches Laden des Kernelmodul-Overlayfs-Vorgangs beim CentOS-Start

Um Kernelmodule in CentOS automatisch zu laden, k...

Installieren und verwenden Sie Git und GitHub unter Ubuntu Linux

Einführung in Git Git ist eine Open-Source-Versio...

JS implementiert das Schlangenspiel

Inhaltsverzeichnis 1. Initialisierungsstruktur 2....