ADOBE COMMERCE

Advanced Routing mit Fastly CDN

Alexandr Tihanov

Advanced routing with fastly Advanced routing using fastly CDN

Fastly ist ein auf Varnish basierender Dienst, der in Adobe Commerce Cloud (Magento) für die Bereitstellung von Inhalten, Sicherheit und Bildoptimierung verwendet wird. In diesem Artikel beschreibe ich einige der erweiterten Routing-Funktionen für Entwickler.

Die übliche Art, das Routing in Adobe Commerce Cloud zu verwalten, ist die Verwendung von routes.yaml-Funktionen. Diese Regeln werden dann in die Nginx-Einstellungen übertragen.

Dies ist ausreichend, solange Sie einfache Routing-Anforderungen haben. Wenn Sie jedoch komplexere Anforderungen haben, ist die Verwendung von Fastly die bessere Wahl. Es erlaubt Ihnen, komplexes Routing auf einer höheren Ebene zu erstellen, bevor die Anfrage Magento erreicht.

Backend Settings

Das "Backend" könnte auch "Origin Server" genannt werden. Wir haben zum Beispiel zwei Systeme. Das alte und das neue System (Adobe Commerce Cloud). Der Kunde hat neue Funktionen implementiert und einen Teil des Katalogs in das neue System verschoben, ohne jedoch den Domänennamen zu ändern. Er hat mehrere Marktplätze und muss für einige Fälle noch das alte System verwenden. Diese Fälle beziehen sich auf URLs und können als regulärer Ausdruck implementiert werden.

Standardmäßig holt Fastly die Inhalte vom Adobe Server. In den "Backend Settings" kann der Entwickler jedoch die Regel setzen und die IP eines anderen Servers angeben, der als Ursprung für die Abholung der Inhalte verwendet wird. Eine detaillierte Erklärung, wie man diese Funktionalität implementiert, ist hier bereits beschrieben, wobei die Integration eines 3rd Party CMS als Beispiel dient.

Non-regex Redirects

Fastly verfügt nicht über einen direkten Mechanismus zum Einstellen einer Liste von Weiterleitungen. Um diese Funktionalität zu implementieren, sollte der Entwickler mehrere Schritte durchführen.

Der erste - ist die Erstellung eines Wörterbuchs. Das Wörterbuch muss eine Liste von Weiterleitungen als Quelle (Schlüssel) und Ziel (Wert) enthalten.

Das Wörterbuch kann unter Stores → Configuration → Advanced → System → Full Page Cache → Fastly Configuration -> Edge Dictionaries erstellt werden. Im ersten Schritt der Wörterbucherstellung muss der "Name" festgelegt werden. Er wird später für die Wörterbuchbindung verwendet. Für diesen Artikel verwende ich "redirects1" als Namen.

Fastly Dictionary Creation Example of Edge dictionary creation

Der nächste Schritt besteht darin, benutzerdefinierte Snippets zu erstellen. Öffnen Sie Stores → Configuration → Advanced → System → Full Page Cache -> Fastly Configuration → Custom VCL Snippets, und erstellen Sie zwei Snippets.

Das erste wird benötigt, um die entsprechende Entität im Wörterbuch zu finden und einen Fehler mit dem Code zurückzugeben, der im zweiten Snippet verarbeitet wird. Es ist nicht notwendig, die genaue Fehlernummer 912 zu verwenden. Der Code wird benötigt, um den Umleitungspfad im Fehlerverarbeitungs-Snippet zu identifizieren.

fastly custom snippet “reqv” custom snippet creation

Wie Sie auf dem Screenshot sehen können, ist in dem Snippet ein zusätzlicher Begriff gesetzt. Dies dient dazu, falsche Host-Redirects zu vermeiden, wenn Magento mehrere Shops auf verschiedenen Domains enthält.

Das zweite Snippet verarbeitet den Fehlercode und gibt eine Antwort mit der übergebenen URL zurück.

fastly error snippet “error” custom snippet creation

Sobald die VCL aktualisiert ist, funktionieren die Weiterleitungen. Beachten Sie, dass die Anfrage auf Fastly-Ebene verwaltet wird. So routes.yaml und Magento Backend Weiterleitungen sind nicht berührt, weil die Anfrage nicht die Magento-Umgebung berührt.

Verwaltung der Dictionaries Einträge

Für das vorherige Beispiel habe ich die Funktion "Edge Dictionaries" verwendet, um Weiterleitungen zu erstellen. Bei einer Liste von mehreren Zeilen reicht die manuelle Bearbeitung aus. Aber sobald Sie eine Liste von mehreren tausend Weiterleitungen haben, wird das ein langer Weg sein. Um die Erstellung von Wörterbüchern zu vereinfachen, bietet Magento eine Importfunktion. Sie befindet sich unter Stores → Configuration → Advanced → System → Full Page Cache → Fastly Configuration → Tools → Import.

Um Daten zu importieren, müssen Sie sie in einer Datei im JSON-Format speichern. Wählen Sie diese Datei aus und klicken Sie auf "Importieren". Die Datei wird auf den Server hochgeladen und im nächsten Fenster sehen Sie die Struktur der enthaltenen Daten. Wählen Sie die gewünschte Art von Daten aus und klicken Sie erneut auf "Importieren".

Die gute Frage ist: "Wie kann ich die richtige Dateistruktur erhalten". Meines Erachtens ist es am einfachsten, die Daten vor dem Import zu exportieren, und zwar über das gleiche Menü. Ändern Sie sie dann in einem Texteditor.

Beachten Sie, dass jedes Edge-Wörterbuch auf maximal 1000 Zeilen begrenzt ist. Wenn es mehr sind, importiert Magento nur die ersten 1000.

Einmal hatte ich es mit einer Liste von etwa 7 Tausend Weiterleitungen von einer SEO-Firma zu tun. Um diese Aufgabe zu bewältigen, habe ich eine Idee, die ich gerne teilen möchte. Die Hauptidee besteht darin, die Daten in mehrere Wörterbücher mit jeweils 1000 Zeilen aufzuteilen und jedes Wörterbuch in "Custom Snippet" zu überprüfen. Php-Skript und Texteditor wurden verwendet, um schnell Daten im benötigten Format zu sammeln. Ich hatte also Wörterbücher mit Namen wie "redirects1", "redirects2", "redirects3", usw. Dann wurden Schnipsel mit solchem Code erstellt.

fastly multiple dictionaries Using multiple dictionaries in Fastly

Wie Sie also sehen, werden alle Wörterbücher auf den Schlüssel geprüft, der umgeleitet werden soll. Und nur ein Fehlercode wird verwendet. Die weitere Verarbeitung ist die gleiche wie im vorherigen Beispiel.

Das Ziel dieses Artikels war es, einen Einblick in die Möglichkeiten von Fastly neben dem CDN-System zu geben.

Photo by Sylvain Gllm on Unsplash