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.
- Logga in på Admin.
- Navigera till Lagrar > Inställningar > Konfiguration > Avancerat > System > Fullsidescache > Snabbt konfigurering.
- Expandera avsnittet Edge ACL.
- Klicka på Lägg till ACL för att skapa en lista. I det här exemplet ger du listan namnet"blockeringslista".
- 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.
- 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
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 namnetblocklist
. -
priority
: Avgör när VCL-fragmentet körs. Prioriteten är5
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 virecv
, som infogar VCL-koden i underrutinenvcl_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 ett403 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 det anpassade VCL-fragmentet från administratören. Den här metoden rekommenderas om du har åtkomst till Admin. (Kräver snabbversion 1.2.58 eller senare.)
-
Spara JSON-kodexemplet till en fil (till exempel
blocklist.json
) och överför det med snabbprogrammeringsgränssnittet. Använd den här metoden om du inte kan komma åt administratören.
Lägg till anpassat VCL-fragment
-
Logga in i administratören.
-
Klicka på Lagrar > Inställningar > Konfiguration > Avancerat > System.
-
Expandera Helsidescache > Snabb konfiguration > Anpassade VCL-kodfragment.
-
Klicka på Skapa anpassat fragment.
-
Lägg till VCL-fragmentvärden:
-
Namn —
blocklist
-
Typ —
recv
-
Prioritet —
5
-
Lägg till VCL-fragmentinnehållet:
code language-conf if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
-
-
Klicka på Skapa om du vill generera VCL-utdragsfilen med namnmönstret
type_priority_name.vcl
, till exempelrecv_5_blocklist.vcl
-
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.
-
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.
- Namn:
<name of the VCL>
- Dynamisk:
<0/1>
- Typ:
<type>
- Prioritet:
<priority>
- Innehåll:
<content>
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\";}"
}
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\";}"
}
$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
-
Logga in i administratören.
-
Klicka på Lagrar > Inställningar > Konfiguration > Avancerat > System.
-
Expandera Helsidescache > Snabb konfiguration > Anpassade VCL-kodfragment.
-
Klicka på inställningsikonen bredvid det fragment som du vill redigera i kolumnen Åtgärd .
-
När sidan har lästs in på nytt klickar du på Överför VCL till Snabbt i avsnittet Snabbkonfiguration.
-
När överföringen är klar uppdaterar du cacheminnet enligt meddelandet längst upp på sidan.
Ta bort det anpassade VCL-fragmentet
-
Logga in i administratören.
-
Klicka på Lagrar > Inställningar > Konfiguration > Avancerat > System.
-
Expandera Helsidescache > Snabb konfiguration > Anpassade VCL-kodfragment.
-
I kolumnen Åtgärd klickar du på papperskorgsikonen bredvid fragmentet som ska tas bort.
-
Klicka på DELETE i nästa modala fönster och aktivera en ny version.