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.
- Melden Sie sich beim Administrator an.
- Navigieren Sie zu Stores > Einstellungen > Konfiguration > Erweitert > System > Gesamter Seiten-Cache > Schnelle Konfiguration.
- Erweitern Sie den Abschnitt Edge ACL .
- Klicken Sie auf ACL hinzufügen , um eine Liste zu erstellen. Nennen Sie für dieses Beispiel die Liste "Blockierungsliste".
- 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.
- 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
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 Namenblocklist
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 einem403 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:
-
Fügen Sie das benutzerdefinierte VCL-Snippet aus dem Admin hinzu. Diese Methode wird empfohlen, wenn Sie auf den Admin zugreifen können. (Erfordert schnelle Version 1.2.58 oder höher.)
-
Speichern Sie das JSON-Codebeispiel in eine Datei (z. B.
blocklist.json
) und laden Sie sie mit der Fastly API🔗 hoch. Verwenden Sie diese Methode, wenn Sie nicht auf den Admin zugreifen können.
Hinzufügen des benutzerdefinierten VCL-Snippets
-
Melden Sie sich beibeim Administrator an.
-
Klicken Sie auf Stores > Einstellungen > Konfiguration > Erweitert > System.
-
Erweitern Sie Vollständiger Seiten-Cache > Fastly Configuration > Custom VCL Snippets.
-
Klicken Sie auf Benutzerdefiniertes Snippet erstellen.
-
Fügen Sie die VCL-Snippet-Werte hinzu:
-
Name —
blocklist
-
Typ —
recv
-
Priorität —
5
-
Fügen Sie den Codeausschnitt-Inhalt VCL hinzu:
code language-conf if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
-
-
Klicken Sie auf Erstellen , um die VCL-Snippet-Datei mit dem Namensmuster
type_priority_name.vcl
zu generieren, z. B.recv_5_blocklist.vcl
-
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.
-
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.
- Name:
<name of the VCL>
- Dynamisch:
<0/1>
- Typ:
<type>
- Priorität:
<priority>
- Inhalt:
<content>
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\";}"
}
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\";}"
}
$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
-
Melden Sie sich beibeim Administrator an.
-
Klicken Sie auf Stores > Einstellungen > Konfiguration > Erweitert > System.
-
Erweitern Sie Vollständiger Seiten-Cache > Fastly Configuration > Custom VCL Snippets.
-
Klicken Sie in der Spalte Aktion auf das Einstellungssymbol neben dem zu bearbeitenden Snippet.
-
Klicken Sie nach dem Neuladen der Seite im Abschnitt Schnelle Konfiguration auf VCL auf Fastly hochladen .
-
Nach Abschluss des Uploads aktualisieren Sie den Cache gemäß der Benachrichtigung oben auf der Seite.
Löschen des benutzerdefinierten VCL-Snippets
-
Melden Sie sich beibeim Administrator an.
-
Klicken Sie auf Stores > Einstellungen > Konfiguration > Erweitert > System.
-
Erweitern Sie Vollständiger Seiten-Cache > Fastly Configuration > Custom VCL Snippets.
-
Klicken Sie in der Spalte Aktion auf das Papierkorbsymbol neben dem zu löschenden Ausschnitt.
-
Klicken Sie im nächsten modalen Fenster auf DELETE und aktivieren Sie eine neue Version.