Benutzerdefinierte VCL zum Blockieren von Anfragen
- Themen:
- Cloud
Erstellt für:
- Admin
- Entwickler
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-Code-Ausschnitt verwenden, um eingehende Anfragen zu blockieren. Der Code prüft die IP-Adresse der eingehenden Anfrage. Wenn es mit einer in der ACL-Liste enthaltenen IP-Adresse übereinstimmt, blockiert Fastly den Zugriff der Anfrage auf Ihre Site und gibt eine 403 Forbidden error
zurück. Alle anderen Client-IP-Adressen erhalten Zugriff.
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 Upgrade des Fastly-.
-
Überprüfen Sie die Umgebungskonfiguration für den Fastly-Service. Siehe Prüfen von Fastly-Caching.
-
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 einer 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-Code-Ausschnitt 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-Code-Ausschnitt gilt für beide Umgebungen.
- Melden Sie sich beim Administrator an.
- Navigieren Sie zu Stores > Einstellungen > Konfiguration > Erweitert > System > Vollständiger Seitencache > Fastly Configuration.
- Erweitern Sie den Abschnitt Edge ACL.
- Klicken Sie ACL hinzufügen, um eine Liste zu erstellen. Nennen Sie für dieses Beispiel die Liste "Blockierungsliste".
- Geben Sie Werte für die IP-Adresse in die Liste ein. Alle zu dieser Liste hinzugefügten Client-IP-Adressen werden blockiert und können nicht auf die Website zugreifen.
- Aktivieren Sie bei Bedarf optional das Kontrollkästchen Negiert.
Sie referenzieren die Edge-ACL anhand des Namens in Ihrem VCL-Code.
Erstellen Sie die benutzerdefinierte VCL für die -Blockierungsliste
Nachdem Sie die Edge-ACL definiert haben, können Sie sie verwenden, um das VCL-Snippet zu erstellen und den Zugriff auf die in der ACL angegebenen IP-Adressen zu blockieren. Sie können denselben VCL-Ausschnitt sowohl in der Staging- als auch in der Produktionsumgebung verwenden, müssen den Ausschnitt jedoch separat in jede Umgebung hochladen.
Der folgende benutzerdefinierte VCL-Code-Ausschnitt (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 einen Ausschnitt basierend auf diesem Beispiel erstellen, überprüfen Sie die Werte, um festzustellen, ob Sie Änderungen vornehmen müssen:
-
name
: Name für den VCL-Code-Ausschnitt. In diesem Beispiel haben wir den Namenblocklist
verwendet. -
priority
: Bestimmt, wann der VCL-Snippet ausgeführt wird. Mit der Priorität5
sofort ausgeführt und überprüft werden, 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 wird. Legen Sie die Priorität für jeden benutzerdefinierten Ausschnitt auf einen Wert von über oder unter 50 fest, je nachdem, wann der Ausschnitt ausgeführt werden soll. Snippets mit Zahlen niedrigerer Priorität werden zuerst ausgeführt. -
type
: Gibt den Typ des VCL-Ausschnitts an, der die Position des Ausschnitts im generierten VCL-Code bestimmt. In diesem Beispiel verwenden wirrecv
, das den VCL-Code in dievcl_recv
Unterroutine, unter dem Textbaustein VCL und über allen Objekten einfügt. Eine Liste der SnippetTypen finden Sieder Snippet-Referenz Fastly VCL . -
content
: Der auszuführende VCL-Code-Ausschnitt, der die Client-IP-Adresse prüft. Wenn sich die IP in der Edge-ACL befindet, wird der Zugriff für die gesamte Website mit einem403 Forbidden
blockiert. Alle anderen Client-IP-Adressen erhalten Zugriff.
Nachdem Sie den Code für Ihre Umgebung überprüft und aktualisiert haben, verwenden Sie eine der folgenden Methoden, um das benutzerdefinierte VCL-Snippet zu Ihrer Fastly-Service-Konfiguration hinzuzufügen:
-
Fügen Sie das benutzerdefinierte VCL-Snippet von der Admin. Diese Methode wird empfohlen, wenn Sie auf Admin zugreifen können. (Erfordert Fastly Version 1.2.58 oder höher.)
-
Speichern Sie das JSON-Code-Beispiel in einer Datei (z. B.
blocklist.json
) und Sie es mithilfe der Fastly-API. Verwenden Sie diese Methode, wenn Sie nicht auf Admin zugreifen können.
Hinzufügen des benutzerdefinierten VCL-Snippets
-
Anmelden beim Administrator.
-
Klicken Sie Stores > Einstellungen > Konfiguration > Erweitert > System.
-
Erweitern Sie Vollständiger Seitencache > Fastly-Konfiguration > Benutzerdefinierte VCL-Snippets.
-
Klicken Sie Benutzerdefiniertes Snippet erstellen.
-
Fügen Sie die VCL-Snippet-Werte hinzu:
-
Name —
blocklist
-
Typ —
recv
-
Priorität —
5
-
Fügen Sie den VCL-Ausschnittinhalt hinzu:
if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
-
-
Klicken Sie Erstellen, um die VCL-Snippet-Datei mit dem Namensmuster
type_priority_name.vcl
zu generieren, z. B.recv_5_blocklist.vcl
-
Nachdem die Seite neu geladen wurde, klicken im Abschnitt „Fastly-Konfiguration auf VCL zu Fastly hochladen, um die Datei zur Fastly-Service-Konfiguration hinzuzufügen.
-
Aktualisieren Sie den Cache nach den Uploads 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.
Weitere VCL-Beispiele für das Blockieren von Anfragen
Die folgenden Beispiele zeigen, wie Anfragen mit Inline-Bedingungsanweisungen anstelle einer ACL-Liste blockiert werden können.
- 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-Code-Beispiel: 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-Code-Beispiel: Durch HTTP-Benutzeragenten-Anfrage-Header blockieren
{
"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
in Ihrer Umgebung hinzufügen. Snippets in diesem Verzeichnis werden automatisch hochgeladen, wenn Sie im Commerce-Admin auf VCL zu Fastly hochladen) klicken. Siehe Automatisierte Bereitstellung benutzerdefinierter VCL-Snippets im Fastly CDN-Modul für die Magento 2-Dokumentation.Ändern des benutzerdefinierten VCL-Snippets
-
Anmelden beim Administrator.
-
Klicken Sie auf Stores > Einstellungen > Konfiguration > Erweitert > System.
-
Erweitern Sie Vollständiger Seitencache > Fastly-Konfiguration > Benutzerdefinierte VCL-Snippets.
-
Klicken Sie in Spalte Aktion“ auf das Einstellungssymbol neben dem Snippet, das bearbeitet werden soll.
-
Nachdem die Seite neu geladen wurde, klicken Sie im Abschnitt Fastly-Konfiguration auf VCL zu Fastly.
-
Aktualisieren Sie nach Abschluss des Uploads den Cache entsprechend der Benachrichtigung oben auf der Seite.
Löschen des benutzerdefinierten VCL-Snippets
-
Anmelden beim Administrator.
-
Klicken Sie auf Stores > Einstellungen > Konfiguration > Erweitert > System.
-
Erweitern Sie Vollständiger Seitencache > Fastly-Konfiguration > Benutzerdefinierte VCL-Snippets.
-
Klicken Sie in Spalte Aktion“ auf das Papierkorbsymbol neben dem zu löschenden Snippet.
-
Klicken Sie im nächsten modalen Fenster auf DELETE aktivieren Sie eine neue Version.