Anpassad VCL för blockeringsbegäranden

Du kan använda modulen Fast CDN för Magento 2 för att skapa en Edge ACL med en lista över IP-adresser som du vill blockera. Sedan kan du använda den listan med ett VCL-fragment för att blockera inkommande begäranden. Koden kontrollerar IP-adressen för den inkommande begäran. Om den matchar en IP-adress som ingår i ACL-listan blockerar snabbbegäran från att få åtkomst till din plats och returnerar en 403 Forbidden error. Alla andra IP-adresser för klienter har åtkomst.

Förutsättningar:

  • Miljön måste vara konfigurerad att använda snabbnätverket för CDN. Se Konfigurera snabbtjänster.

  • Se till att du använder den senaste versionen av Snabbt CDN-modulen för Magento 2. Se Uppgradera snabbmodulen.

  • Kontrollera miljökonfigurationen för tjänsten Snabbt. Se Kontrollera cachelagring snabbt.

  • Du måste ha administratörsbehörighet för att få tillgång till förproduktionsmiljöer.

  • Lista över IP-adresser för klient som ska blockeras

Skapa Edge ACL för att blockera IP-adresser för klienter

Du skapar en Edge ACL för att definiera listan över IP-adresser som ska blockeras. När du har skapat ACL-listan kan du använda den i ett anpassat VCL-kodfragment för att hantera åtkomsten till din mellanlagrings- eller produktionsplats.

Hantera åtkomsten till både mellanlagrings- och produktionsplatser genom att skapa Edge ACL med samma namn i båda miljöerna. VCL-fragmentkoden gäller båda miljöerna.

  1. Logga in på Admin.
  2. Navigera till Lagrar > Inställningar > Konfiguration > Avancerat > System > Fullsidescache > Snabbt konfigurering.
  3. Expandera avsnittet Edge ACL.
  4. Klicka på Lägg till ACL för att skapa en lista. I det här exemplet ger du listan namnet"blockeringslista".
  5. Ange IP-adressvärden i listan. Alla klient-IP-adresser som läggs till i den här listan blockeras och kan inte komma åt webbplatsen.
  6. Du kan också markera kryssrutan Negerad om det behövs.

Du refererar till Edge ACL efter namn i VCL-kodfragmentkoden.

Skapa anpassad VCL för blockeringslista

NOTE
I det här exemplet visas hur avancerade användare skapar ett VCL-kodfragment för att konfigurera anpassade blockeringsregler för överföring till tjänsten Snabbt. Du kan konfigurera ett blockeringslista eller tillåtelselista baserat på land från Adobe Commerce Admin med funktionen Blockera som finns i modulen Snabbt CDN för Magento 2.

När du har definierat Edge ACL kan du använda det för att skapa VCL-kodfragmentet och blockera åtkomst till de IP-adresser som anges i ACL. Du kan använda samma VCL-kodfragment i både Staging- och Production-miljöer, men du måste överföra fragmentet till varje miljö separat.

Följande anpassade VCL-kodfragment (JSON-format) visar logiken för att blockera inkommande begäranden med en klient-IP-adress som matchar en adress i blockeringslista-ACL.

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

Innan du skapar ett fragment baserat på det här exemplet ska du granska värdena för att avgöra om du behöver göra några ändringar:

  • name: VCL-fragmentets namn. I det här exemplet använde vi namnet blocklist.

  • priority: Avgör när VCL-fragmentet körs. Prioriteten är 5 för att omedelbart köra och kontrollera om en administratörsbegäran kommer från en tillåten IP-adress. Utdraget körs före något av de Magento VCL-standardfragment (magentomodule_*) som tilldelats en prioritet på 50. Ange prioriteten för varje anpassat fragment som är högre eller lägre än 50, beroende på när du vill att fragmentet ska köras. Fragment med lägre prioritetsnummer körs först.

  • type: Anger den typ av VCL-fragment som bestämmer fragmentets plats i den genererade VCL-koden. I det här exemplet använder vi recv, som infogar VCL-koden i underrutinen vcl_recv, nedanför mallens VCL och ovanför eventuella objekt. I Snabbt VCL-fragmentreferens finns en lista med fragmenttyper.

  • content: Det VCL-kodfragment som ska köras, som kontrollerar klientens IP-adress. Om IP-adressen finns i Edge ACL blockeras den från åtkomst med ett 403 Forbidden-fel för hela webbplatsen. Alla andra IP-adresser för klienter har åtkomst.

När du har granskat och uppdaterat koden för din miljö använder du någon av följande metoder för att lägga till det anpassade VCL-fragmentet i din snabbtjänstkonfiguration:

Lägg till anpassat VCL-fragment

  1. Logga in i administratören.

  2. Klicka på Lagrar > Inställningar > Konfiguration > Avancerat > System.

  3. Expandera Helsidescache > Snabb konfiguration > Anpassade VCL-kodfragment.

  4. Klicka på Skapa anpassat fragment.

  5. Lägg till VCL-fragmentvärden:

    • Namnblocklist

    • Typrecv

    • Prioritet5

    • Lägg till VCL-fragmentinnehållet:

      code language-conf
      if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
      
  6. Klicka på Skapa om du vill generera VCL-utdragsfilen med namnmönstret type_priority_name.vcl, till exempel recv_5_blocklist.vcl

  7. När sidan har lästs in på nytt klickar du på Överför VCL till Snabbt i avsnittet Snabbkonfiguration för att lägga till filen i snabbtjänstkonfigurationen.

  8. Uppdatera cacheminnet enligt meddelandet högst upp på sidan när överföringen är klar.

Snabbt validerar den uppdaterade versionen av VCL-koden under överföringsprocessen. Om valideringen misslyckas kan du åtgärda problemet genom att redigera det anpassade VCL-fragmentet. Ladda sedan upp VCL-filen igen.

Ytterligare VCL-exempel för blockeringsbegäranden

I följande exempel visas hur du blockerar begäranden med hjälp av infogade villkorssatser i stället för en ACL-lista.

WARNING
I de här exemplen formateras VCL-koden som en JSON-nyttolast som kan sparas i en fil och skickas i en Fast API-begäran. Du kan skicka VCL-fragmentet från Admin eller som en JSON-sträng med API:t Snabb. För att förhindra validering när du använder API:t Fastly med en JSON-sträng måste du använda ett omvänt snedstreck för att undvika specialtecken.

Se Använda dynamiska VCL-kodfragment i dokumentationen för Snabbt VCL.

Exempel på VCL-kod: Blockera efter landskod

I det här exemplet används ISO 3166-1-landskoden med två tecken för det land som är associerat med IP-adressen.

{
  "name": "blockbycountrycode",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if ( client.geo.country_code == \"HK\" ) { error 405 \"Not allowed\";}"
}
NOTE
I stället för att använda ett anpassat VCL-kodfragment kan du använda funktionen Blockera snabbt i Adobe Commerce-administratören för molninfrastruktur för att konfigurera blockering efter landskod eller en lista med landskoder.

Exempel på VCL-kod: Blockera med huvudet för HTTP-användaragentbegäran

{
  "name": "blockbyuseragent",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if ( req.http.User-Agent ~ \"(UCBrowser|MQQBrowser|LieBaoFast|Mb2345Browser)\" ) {error 405 \"Not allowed\";}"
}
NOTE
I stället för att överföra anpassade VCL-fragment manuellt kan du lägga till fragment i katalogen $MAGENTO_CLOUD_APP_DIR/var/vcl_snippets_custom i din miljö. Utdrag i den här katalogen överförs automatiskt när du klickar på överför VCL till Fastly i Commerce Admin. Mer information om Magento 2 finns i Automatiserad distribution av anpassade VCL-fragment i modulen Fast CDN.

Ändra det anpassade VCL-fragmentet

  1. Logga in i administratören.

  2. Klicka på Lagrar > Inställningar > Konfiguration > Avancerat > System.

  3. Expandera Helsidescache > Snabb konfiguration > Anpassade VCL-kodfragment.

    Hantera anpassade VCL-fragment

  4. Klicka på inställningsikonen bredvid det fragment som du vill redigera i kolumnen Åtgärd .

  5. När sidan har lästs in på nytt klickar du på Överför VCL till Snabbt i avsnittet Snabbkonfiguration.

  6. När överföringen är klar uppdaterar du cacheminnet enligt meddelandet längst upp på sidan.

WARNING
Gränssnittsalternativet Anpassade VCL-fragment visar bara de fragment som lagts till via Adobe Commerce Admin. Om du lägger till fragment med API:t Snabb använder du API:t för att hantera dem.

Ta bort det anpassade VCL-fragmentet

  1. Logga in i administratören.

  2. Klicka på Lagrar > Inställningar > Konfiguration > Avancerat > System.

  3. Expandera Helsidescache > Snabb konfiguration > Anpassade VCL-kodfragment.

    Hantera anpassade VCL-fragment

  4. I kolumnen Åtgärd klickar du på papperskorgsikonen bredvid fragmentet som ska tas bort.

  5. Klicka på DELETE i nästa modala fönster och aktivera en ny version.

WARNING
Gränssnittsalternativet Anpassade VCL-fragment visar bara de fragment som lagts till via Adobe Commerce Admin. Om du lägger till fragment med API:t Snabb använder du API:t för att hantera dem.
recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26