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 IP-Adresse übereinstimmt, die in der ACL-Liste enthalten ist, blockiert die Anfrage schnell den Zugriff auf Ihre Site und gibt eine 403 Forbidden error
. 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 Services konfigurieren.
-
Stellen Sie sicher, dass Sie die neueste Version des Fastly CDN-Moduls für Magento 2 ausführen. Siehe Fastly-Modul aktualisieren.
-
Ü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 > Vollständiger Seiten-Cache > Schnelle Konfiguration.
- Erweitern Sie die Edge ACL Abschnitt.
- Klicks 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.
- Wählen Sie optional die Negativ bei Bedarf.
Sie verweisen auf die Edge-ACL nach Name in Ihrem VCL-Codefragment.
Erstellen der benutzerdefinierten VCL für die Blockierungsliste
Nachdem Sie die Edge-ACL definiert haben, können Sie damit das VCL-Snippet 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-Snippet. In diesem Beispiel haben wir den Namenblocklist
. -
priority
: Bestimmt, wann das VCL-Snippet ausgeführt wird. Die Priorität5
, um sofort auszuführen und zu überprüfen, ob eine Admin-Anfrage von einer zulässigen IP-Adresse stammt. Das Snippet wird vor einem der standardmäßigen Magento VCL-Snippets (magentomodule_*
) eine Priorität von 50 zugewiesen. 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 wirrecv
, wodurch der VCL-Code in dievcl_recv
Subroutine, unterhalb der Bausteinplakette VCL und über allen Objekten. Siehe Fastly VCL-Codefragment für die Liste der Snippet-Typen. -
content
: Der auszuführende VCL-Codeausschnitt, der die Client-IP-Adresse überprüft. Wenn sich die IP in der Edge-ACL befindet, wird sie vom Zugriff mit einer403 Forbidden
-Fehler für die gesamte Website. 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 einer -Datei (z. B.
blocklist.json
) und Hochladen mit der Fastly-API. Verwenden Sie diese Methode, wenn Sie nicht auf den Admin zugreifen können.
Hinzufügen des benutzerdefinierten VCL-Snippets
-
Anmelden an den Administrator.
-
Klicks Stores > Einstellungen > Konfiguration > Erweitert > System.
-
Erweitern Vollständiger Seiten-Cache > Schnelle Konfiguration > Benutzerdefinierte VCL-Snippets.
-
Klicks Benutzerdefiniertes Snippet erstellen.
-
Fügen Sie die VCL-Snippet-Werte hinzu:
-
Name —
blocklist
-
Typ —
recv
-
Priorität —
5
-
Fügen Sie die VCL Snippet-Inhalt:
code language-conf if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
-
-
Klicks Erstellen , um die VCL-Snippet-Datei mit dem Namensmuster zu generieren
type_priority_name.vcl
, beispielsweiserecv_5_blocklist.vcl
-
Nachdem die Seite neu geladen wurde, klicken Sie auf VCL schnell hochladen im Schnelle Konfiguration -Abschnitt, 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.
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
-Verzeichnis in Ihrer Umgebung. Snippets in diesem Verzeichnis werden beim Klicken auf VCL auf Fastly hochladen im Commerce Admin. Siehe Automatisierte Bereitstellung benutzerdefinierter VCL-Snippets im Fastly CDN-Modul für die Magento 2-Dokumentation.Ändern des benutzerdefinierten VCL-Snippets
-
Anmelden an den Administrator.
-
Klicks Stores > Einstellungen > Konfiguration > Erweitert > System.
-
Erweitern Vollständiger Seiten-Cache > Schnelle Konfiguration > Benutzerdefinierte VCL-Snippets.
-
Im Aktion klicken Sie auf das Einstellungssymbol neben dem zu bearbeitenden Snippet.
-
Nachdem die Seite neu geladen wurde, klicken Sie auf VCL schnell hochladen im Schnelle Konfiguration Abschnitt.
-
Nach Abschluss des Uploads aktualisieren Sie den Cache gemäß der Benachrichtigung oben auf der Seite.
Löschen des benutzerdefinierten VCL-Snippets
-
Anmelden an den Administrator.
-
Klicks Stores > Einstellungen > Konfiguration > Erweitert > System.
-
Erweitern Vollständiger Seiten-Cache > Schnelle Konfiguration > Benutzerdefinierte VCL-Snippets.
-
Im Aktion auf das Papierkorbsymbol neben dem zu löschenden Snippet klicken.
-
Klicken Sie im nächsten modalen Fenster auf DELETE und aktivieren Sie eine neue Version.