Benutzerdefinierte VCL für das Blockieren von Anforderungen

Sie können das Fastly CDN-Modul für Magento 2 verwenden, um eine Edge-ACL mit einer Liste von IP-Adressen zu erstellen, die Sie blockieren möchten. Anschließend können Sie diese Liste mit einem VCL-Snippet verwenden, um eingehende Anfragen zu blockieren. Der Code überprüft die IP-Adresse der eingehenden Anfrage. Wenn es mit einer in der ACL-Liste enthaltenen IP-Adresse übereinstimmt, blockiert Fastly die Anfrage am Zugriff auf Ihre Site und gibt einen 403 Forbidden error zurück. Der Zugriff auf alle anderen Client-IP-Adressen ist zulässig.

Voraussetzungen:

  • Ihre Umgebung muss für die Verwendung des Fastly CDN konfiguriert sein. Siehe Fastly-Dienste konfigurieren.

  • Stellen Sie sicher, dass Sie die neueste Version des Fastly CDN-Moduls für Magento 2 ausführen. Siehe Aktualisieren des Schnellmoduls.

  • Überprüfen Sie die Umgebungskonfiguration für den Fastly-Dienst. Siehe Schnelles Zwischenspeichern überprüfen.

  • Sie müssen über Administratorberechtigungen verfügen, um auf die Staging- und Produktionsumgebungen zugreifen zu können.

  • Liste der zu blockierenden Client-IP-Adressen

Erstellen von Edge ACL zum Blockieren von Client-IP-Adressen

Sie erstellen eine Edge ACL, um die Liste der zu blockierenden IP-Adressen zu definieren. Nachdem Sie die ACL erstellt haben, können Sie sie in einem benutzerdefinierten VCL-Snippet verwenden, um den Zugriff auf Ihre Staging- oder Produktions-Site zu verwalten.

Verwalten Sie den Zugriff für Staging- und Produktions-Sites, indem Sie die Edge-ACL mit demselben Namen in beiden Umgebungen erstellen. Der VCL-Snippet-Code gilt für beide Umgebungen.

  1. Melden Sie sich beim Administrator an.
  2. Navigieren Sie zu Stores > Einstellungen > Konfiguration > Erweitert > System > Gesamter Seiten-Cache > Schnelle Konfiguration.
  3. Erweitern Sie den Abschnitt Edge ACL .
  4. Klicken Sie auf ACL hinzufügen , um eine Liste zu erstellen. Nennen Sie für dieses Beispiel die Liste "Blockierungsliste".
  5. Geben Sie IP-Adresswerte in die Liste ein. Alle Client-IP-Adressen, die dieser Liste hinzugefügt wurden, werden blockiert und können nicht auf die Site zugreifen.
  6. Aktivieren Sie bei Bedarf optional das Kontrollkästchen Negiert .

Sie referenzieren die Edge-ACL nach Name in Ihrem VCL-Codefragment-Code.

Erstellen der benutzerdefinierten VCL für die Blockierungsliste

NOTE
In diesem Beispiel erfahren fortgeschrittene Benutzer, wie ein VCL-Codefragment erstellt wird, um benutzerspezifische Blockierungsregeln für den Upload in den Fastly-Dienst zu konfigurieren. Sie können vom Adobe Commerce-Administrator eine Blockierungsliste oder eine Zulassungsliste basierend auf dem Land mithilfe der Funktion Blocking konfigurieren, die im Fastly CDN für das Magento 2-Modul verfügbar ist.

Nachdem Sie die Edge ACL definiert haben, können Sie sie verwenden, um das VCL-Snippet zu erstellen, um den Zugriff auf die in der ACL angegebenen IP-Adressen zu blockieren. Sie können dasselbe VCL-Snippet sowohl in der Staging- als auch in der Produktionsumgebung verwenden. Sie müssen das Snippet jedoch separat in jede Umgebung hochladen.

Der folgende benutzerdefinierte VCL-Codeausschnitt (JSON-Format) zeigt die Logik zum Blockieren eingehender Anfragen mit einer Client-IP-Adresse, die mit einer Adresse in der ACL der Blockierungsliste übereinstimmt.

{
  "name": "blocklist",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if ( client.ip ~ blocklist) { error 403 \"Forbidden\"; }"
}

Bevor Sie ein auf diesem Beispiel basierendes Snippet erstellen, überprüfen Sie die Werte, um festzustellen, ob Sie Änderungen vornehmen müssen:

  • name: Name für das VCL-Codefragment. Für dieses Beispiel haben wir den Namen blocklist verwendet.

  • priority: Bestimmt, wann das VCL-Snippet ausgeführt wird. Die Priorität lautet "5", um sofort auszuführen und zu überprüfen, ob eine Admin-Anfrage von einer zulässigen IP-Adresse stammt. Das Snippet wird ausgeführt, bevor einem der standardmäßigen Magento VCL-Snippets (magentomodule_*) eine Priorität von 50 zugewiesen wurde. Legen Sie die Priorität für jedes benutzerdefinierte Snippet höher oder niedriger als 50 fest, je nachdem, wann Ihr Snippet ausgeführt werden soll. Snippets mit niedrigeren Prioritätswerten werden zuerst ausgeführt.

  • type: Gibt den Typ des VCL-Snippets an, das die Position des Snippets im generierten VCL-Code bestimmt. In diesem Beispiel verwenden wir "recv", wodurch der VCL-Code in die "vcl_recv"-UnterRoutine unter der Textbausteinvorlage "VCL"und über allen Objekten eingefügt wird. Die Liste der Ausschnitttypen finden Sie in der Codeausschnitt-Referenz für Fastly VCL .

  • content: Das auszuführende VCL-Codefragment, das die Client-IP-Adresse überprüft. Wenn sich die IP in der Edge ACL befindet, wird sie für die gesamte Website mit einem 403 Forbidden -Fehler vom Zugriff ausgeschlossen. Der Zugriff auf alle anderen Client-IP-Adressen ist zulässig.

Nachdem Sie den Code für Ihre Umgebung überprüft und aktualisiert haben, verwenden Sie eine der folgenden Methoden, um das benutzerdefinierte VCL-Snippet Ihrer Fastly Service-Konfiguration hinzuzufügen:

Hinzufügen des benutzerdefinierten VCL-Snippets

  1. Melden Sie sich beibeim Administrator an.

  2. Klicken Sie auf Stores > Einstellungen > Konfiguration > Erweitert > System.

  3. Erweitern Sie Vollständiger Seiten-Cache > Fastly Configuration > Custom VCL Snippets.

  4. Klicken Sie auf Benutzerdefiniertes Snippet erstellen.

  5. Fügen Sie die VCL-Snippet-Werte hinzu:

    • Nameblocklist

    • Typrecv

    • Priorität5

    • Fügen Sie den Codeausschnitt-Inhalt VCL hinzu:

      code language-conf
      if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
      
  6. Klicken Sie auf Erstellen , um die VCL-Snippet-Datei mit dem Namensmuster type_priority_name.vcl zu generieren, z. B. recv_5_blocklist.vcl

  7. Klicken Sie nach dem Neuladen der Seite im Abschnitt Schnelle Konfiguration auf VCL auf Fastly hochladen , um die Datei zur Konfiguration des Fastly-Dienstes hinzuzufügen.

  8. Aktualisieren Sie nach dem Hochladen den Cache gemäß der Benachrichtigung oben auf der Seite.

Validiert die aktualisierte Version des VCL-Codes während des Upload-Prozesses schnell. Wenn die Validierung fehlschlägt, bearbeiten Sie das benutzerdefinierte VCL-Snippet, um das Problem zu beheben. Laden Sie dann die VCL erneut hoch.

Zusätzliche VCL-Beispiele für das Blockieren von Anforderungen

Die folgenden Beispiele zeigen, wie Sie Anforderungen mit Inline-Bedingungsanweisungen statt einer ACL-Liste blockieren.

WARNING
In diesen Beispielen wird der VCL-Code als JSON-Payload formatiert, die in einer Datei gespeichert und in einer Fastly API-Anfrage gesendet werden kann. Sie können das VCL-Snippet vom Admin oder als JSON-Zeichenfolge mithilfe der Fastly-API senden. Um eine Validierung zu verhindern, wenn Sie die Fastly-API mit einer JSON-Zeichenfolge verwenden, müssen Sie einen umgekehrten Schrägstrich verwenden, um Sonderzeichen zu maskieren.

Siehe Verwenden dynamischer VCL-Snippets in der Fastly VCL-Dokumentation.

VCL-Codebeispiel: Block nach Ländercode

In diesem Beispiel wird der zweistellige ISO 3166-1-Ländercode für das Land verwendet, das mit der IP-Adresse verknüpft ist.

{
  "name": "blockbycountrycode",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if ( client.geo.country_code == \"HK\" ) { error 405 \"Not allowed\";}"
}
NOTE
Statt ein benutzerdefiniertes VCL-Snippet zu verwenden, können Sie die Funktion Fastly Blocking in der Adobe Commerce in der Cloud-Infrastruktur-Admin verwenden, um die Blockierung nach Ländercode oder einer Liste von Ländercodes zu konfigurieren.

VCL-Codebeispiel: Blockierung durch HTTP-Anforderungs-Header für Benutzeragenten

{
  "name": "blockbyuseragent",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if ( req.http.User-Agent ~ \"(UCBrowser|MQQBrowser|LieBaoFast|Mb2345Browser)\" ) {error 405 \"Not allowed\";}"
}
NOTE
Anstatt benutzerdefinierte VCL-Snippets manuell hochzuladen, können Sie in Ihrer Umgebung Snippets zum Ordner "$MAGENTO_CLOUD_APP_DIR/var/vcl_snippets_custom"hinzufügen. Snippets in diesem Verzeichnis werden automatisch hochgeladen, wenn Sie in Commerce Admin auf VCL auf Fastly hochladen klicken. Informationen zu Magento 2 finden Sie unter Bereitstellung automatisierter benutzerdefinierter VCL-Snippets im Fastly CDN-Modul.

Ändern des benutzerdefinierten VCL-Snippets

  1. Melden Sie sich beibeim Administrator an.

  2. Klicken Sie auf Stores > Einstellungen > Konfiguration > Erweitert > System.

  3. Erweitern Sie Vollständiger Seiten-Cache > Fastly Configuration > Custom VCL Snippets.

    Verwalten benutzerdefinierter VCL-Snippets

  4. Klicken Sie in der Spalte Aktion auf das Einstellungssymbol neben dem zu bearbeitenden Snippet.

  5. Klicken Sie nach dem Neuladen der Seite im Abschnitt Schnelle Konfiguration auf VCL auf Fastly hochladen .

  6. Nach Abschluss des Uploads aktualisieren Sie den Cache gemäß der Benachrichtigung oben auf der Seite.

WARNING
Die UI-Option Benutzerdefinierte VCL-Snippets zeigt nur die Snippets an, die über den Adobe Commerce-Administrator hinzugefügt wurden. Wenn Sie Snippets mit der Fastly API hinzufügen, verwenden Sie die API, um sie zu verwalten.

Löschen des benutzerdefinierten VCL-Snippets

  1. Melden Sie sich beibeim Administrator an.

  2. Klicken Sie auf Stores > Einstellungen > Konfiguration > Erweitert > System.

  3. Erweitern Sie Vollständiger Seiten-Cache > Fastly Configuration > Custom VCL Snippets.

    Verwalten benutzerdefinierter VCL-Snippets

  4. Klicken Sie in der Spalte Aktion auf das Papierkorbsymbol neben dem zu löschenden Ausschnitt.

  5. Klicken Sie im nächsten modalen Fenster auf DELETE und aktivieren Sie eine neue Version.

WARNING
Die UI-Option Benutzerdefinierte VCL-Snippets zeigt nur die Snippets an, die über den Adobe Commerce-Administrator hinzugefügt wurden. Wenn Sie Snippets mit der Fastly API hinzufügen, verwenden Sie die API, um sie zu verwalten.
recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26