Komma igång med anpassad VCL
Stöd snabbt för en anpassad version av VCL (Varnish Configuration Language) för att anpassa snabbtjänstkonfigurationen efter dina behov.
Anpassade VCL-kodfragment är block med VCL-logik som lagts till i den aktiva VCL-versionen som överförts till din Adobe Commerce-webbplats. Ett anpassat VCL-fragment ändrar hur Fast caching-tjänster svarar på förfrågningstrafik. Du kan t.ex. lägga till ett anpassat VCL-kodfragment som endast tillåter begärandetrafik från angivna IP-adresser för klienten. Du kan också skapa ett fragment som blockerar trafik från webbplatser som är kända för att skicka skräppost till dina Adobe Commerce-webbplatser.
Anpassade VCL-kodfragment - genererade, kompilerade och överförda till alla fast cacheminnen - laddas och aktiveras utan serverdriftavbrott.
Stöd för två typer av anpassade VCL-fragment:
-
Vanliga fragment - Anpassade vanliga VCL-fragment kodas för specifika VCL-versioner. Du kan skapa, ändra och distribuera vanliga VCL-kodfragment från Admin eller Fast API.
-
Dynamiska fragment - VCL-fragment skapade med API:t Snabb. Du kan ändra och distribuera dynamiska kodfragment utan att behöva uppdatera den snabbaste VCL-versionen för tjänsten.
Vi rekommenderar att du använder anpassade VCL-kodfragment med Edge-ordlistor och ACL-listor (Access Control Lists) för att lagra data som används i din anpassade kod.
-
Edge-ordlista - Lagrar data som nyckelvärdepar i en ordlistebehållare som kan refereras från anpassade VCL-fragment
-
Edge ACL - Lagrar klientens IP-adressdata som definierar åtkomstkontrollistan för block eller tillåt regler som implementerats med anpassade VCL-fragment
Ordlistan och ACL-data distribueras till Edge-noder med snabb åtkomst över olika nätverksregioner. Data kan också uppdateras dynamiskt i nätverket utan att du behöver omdistribuera VCL-koden för din staging- eller produktionsmiljö.
Självstudiekurs
I den här självstudiekursen och exemplen visas hur du använder vanliga anpassade VCL-fragment med Edge-ordlistor och Edge ACL:er för att anpassa snabbtjänstkonfigurationen för Adobe Commerce. Mer detaljerad information finns i Snabb-dokumentationen:
- Guide to Fastly VCL - Information om Snabb lack-implementering, Fast VCL-tillägg och resurser för att lära dig mer om Varnish och VCL.
- Snabb VCL-referens - Detaljerad programmeringsreferens för att utveckla och felsöka snabbt anpassade VCL- och anpassade VCL-kodfragment.
Du kan skapa och hantera anpassade VCL-kodfragment från Adobe Commerce Admin eller via Fast API:
-
Adobe Commerce Admin - Vi rekommenderar att du använder Adobe Commerce Admin för att hantera anpassade VCL-fragment eftersom det automatiserar processen att validera, överföra och tillämpa VCL-ändringarna i snabbtjänstkonfigurationen. Du kan även visa och redigera de anpassade VCL-kodfragment som lagts till i snabbtjänstkonfigurationen från Admin.
-
Snabb API - Om du inte kan komma åt administratören kan du använda snabbgränssnittet för att hantera anpassade VCL-fragment. Använd till exempel API:t för att felsöka snabbtjänstkonfigurationen när platsen är nere, eller för att lägga till ett anpassat VCL-fragment. Vissa åtgärder kan bara slutföras med API:t. Du måste till exempel använda API:t för att återaktivera en äldre VCL-version eller för att visa alla VCL-kodfragment som ingår i en angiven VCL-version. Se API-snabbreferens för VCL-fragment.
Exempel på VCL-kodfragment
I följande exempel visas det anpassade VCL-kodfragment (JSON-format) som filtrerar trafik efter klientens IP-adress:
{
"service_id": "FASTLY_SERVICE_ID",
"version": "{Editable Version #}",
"name": "apply_acl",
"priority": "100",
"dynamic": "1",
"type": "hit",
"content": "if ((client.ip ~ {ACLNAME}) && !req.http.Fastly-FF){ error 403; }"
}
VCL-logiken i fältet content
utför följande åtgärder:
-
Kontrollerar den inkommande IP-adressen,
client.ip
för varje begäran -
Blockerar alla begäranden med en IP-adress som ingår i ACLNAME edge ACL, vilket returnerar ett
403 Forbidden
-fel
Följande tabell innehåller information om nyckeldata för anpassade VCL-fragment. Mer information finns i referensen VCL-kodfragment i dokumentationen för Snabb.
API_KEY
active
true
eller false
. Om true används fragmentet eller versionen. Klona ett aktivt fragment med dess versionsnummer.content
dynamic
false
för vanliga fragment som ingår i den versionshanterade VCL-filen för snabbtjänstkonfigurationen. Returnerar true
för ett dynamiskt fragment som kan ändras och distribueras utan att en ny VCL-version krävs.number
priority
Numeriskt värde från 1
till 100
som anger när den anpassade VCL-fragmentkoden körs. Fragment med lägre prioritetsvärden körs först. Om inget anges blir priority
-värdet som standard 100
.
Alla anpassade VCL-kodfragment med prioritetsvärdet 5
körs omedelbart, vilket är bäst för VCL-kod som implementerar routning av begäranden (block, tillåtelselista och omdirigeringar). Prioriteten 100
är bäst för att åsidosätta VCL-standardkodfragment.
Alla VCL-standardfragment som ingår i modulen Magento-Fast har priority=50
.
- Tilldela en hög prioritet som
100
om du vill köra anpassad VCL-kod efter alla andra VCL-funktioner och åsidosätta standardkoden för VCL.
service_id
type
init
(ovan) och recv
(inom underrutiner). Mer information finns i handboken VCL-kodfragment snabbt.Hantera anpassad VCL från administratör
Du kan lägga till anpassade VCL-fragment under Snabbkonfiguration > Anpassade VCL-fragment i Admin.
Vyn Anpassade VCL-kodfragment visar endast fragment som har lagts till via administratören. Om fragment läggs till med API:t Snabb använder du API:t för att hantera dem.
I följande exempel visas hur du skapar och hanterar anpassade VCL-kodfragment från administratören och använder Fastly Edge-moduler och Edge-ordlistor:
Hantera VCL med API
I följande genomgång visas hur du skapar vanliga VCL-kodfragmentfiler och lägger till dem i din snabbtjänstkonfiguration med API:t Snabb. Du kan skapa och hantera fragment från programmet terminal. Du behöver ingen SSH-anslutning till en viss miljö.
Förutsättningar:
-
Konfigurera din Adobe Commerce i molninfrastrukturmiljö för Snabba tjänster. Se Konfigurera snabbt.
-
Få API-autentiseringsuppgifter snabbt för att autentisera begäranden till API:t Snabb. Se till att du får autentiseringsuppgifterna för rätt miljö: Förproduktion eller Produktion.
-
Spara snabbt autentiseringsuppgifter som grundläggande systemvariabler som du kan använda i cURL-kommandon:
code language-bash export FASTLY_SERVICE_ID=<Service-ID>
code language-bash export FASTLY_API_TOKEN=<API-Token>
De exporterade miljövariablerna är bara tillgängliga i den aktuella bassessionen och försvinner när du stänger terminalen. Du kan definiera om variabler genom att exportera ett nytt värde. Så här visar du listan med exporterade variabler som är relaterade till Snabbt:
code language-bash export | grep FASTLY
Lägg till VCL-fragment
I den här självstudiekursen beskrivs de grundläggande stegen för att lägga till anpassade fragment med hjälp av API:t Snabb.
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.
Steg 1: Hitta den aktiva VCL-versionen
Använd åtgärden hämta version för snabbprogrammeringsgränssnittet för att hämta det aktiva versionsnumret för VCL:
curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/active
Observera det aktiva versionsnumret för VCL i JSON-svaret som returneras i number
-nyckeln, till exempel "number": 99
. Versionsnumret behövs när du klonar VCL för redigering.
{
"testing": false,
"locked": true,
"number": 99,
"active": true,
"service_id": "872zhjyxhto5SIRb3GAE0",
"staging": false,
"created_at": "2019-01-29T22:38:53Z",
"deleted_at": null,
"comment": "Magento Module uploaded VCL",
"updated_at": "2019-01-29T22:39:06Z",
"deployed": false
}
Spara det aktiva versionsnumret i en basmiljövariabel för användning i efterföljande API-begäranden:
export FASTLY_VERSION_ACTIVE=<Version>
Steg 2: Klona den aktiva VCL-versionen och alla kodfragment
Innan du kan lägga till eller ändra anpassade VCL-fragment måste du skapa en kopia av den aktiva VCL-versionen för redigering. Använd åtgärden clone för snabbprogrammeringsgränssnittet:
curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION_ACTIVE/clone -X PUT
I JSON-svaret ökas versionsnumret och nyckelvärdet active är false
. Du kan ändra den nya, inaktiva VCL-versionen lokalt.
{
"testing": false,
"locked": false,
"number": 100,
"active": false,
"service_id": "vW2bLFWhhto5SIRb3GAE0",
"staging": false,
"created_at": "2019-01-29T22:38:53Z",
"deleted_at": null,
"comment": "Magento Module uploaded VCL",
"updated_at": "2019-01-29T22:39:06Z",
"deployed": false
}
Spara det nya versionsnumret i en basmiljövariabel och använd det i följande kommandon:
export FASTLY_EDIT_VERSION=<Version>
Steg 3: Skapa ett anpassat VCL-fragment
Skapa och spara egen VCL-kod i en JSON-fil med följande innehåll och format:
{
"name": "<name>",
"dynamic": "0",
"type": "<type>",
"priority": "100",
"content": "<code all in one line>"
}
Värdena är:
-
name
- VCL-fragmentets namn. -
dynamic
- Anger om detta är ett vanligt fragment eller ett dynamiskt fragment. -
type
- Anger platsen där det genererade fragmentet ska infogas, till exempelinit
(ovanför underrutiner) ochrecv
(inom underrutiner). Mer information om de här värdena finns i Snabbt VCL-fragmentobjektvärden. -
priority
- Ett värde från1
till100
som avgör när den anpassade VCL-fragmentkoden körs. Anpassade VCL-fragment med lägre värden körs först.All VCL-standardkod från snabbVCL-modulen har
priority
av50
. Om du vill att en åtgärd ska utföras sist eller åsidosätta den förvalda VCL-koden ska du använda ett högre tal, till exempel100
. Om du vill köra anpassad VCL-kodfragment omedelbart anger du prioriteten till ett lägre värde, till exempel5
. -
content
- VCL-kodfragmentet som ska köras på en rad, utan radbrytningar. Se Exempel på anpassat VCL-fragment.
Steg 4: Lägg till VCL-kodfragment för snabb konfiguration
Använd snabbmeny-API:t skapa fragment för att lägga till det anpassade VCL-fragmentet i VCL-versionen.
curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_EDIT_VERSION/snippet -H 'Content-Type: application/json' -X POST --data @<filename.json>
<filename.json>
är namnet på filen som du förberedde i föregående steg. Upprepa det här kommandot för varje VCL-fragment.
Om du får ett 500 Internal Server Error
-svar från tjänsten Snabbt kontrollerar du JSON-filsyntaxen för att vara säker på att du överför en giltig fil.
Steg 5: Validera och aktivera anpassade VCL-fragment
När du har lagt till ett anpassat VCL-fragment infogar snabbt fragmentet i den VCL-version som du redigerar. Följ de här stegen för att validera VCL-fragmentkoden och aktivera VCL-versionen om du vill tillämpa ändringarna.
-
Använd snabbvaliderings-API:t validera VCL-version för att verifiera den uppdaterade VCL-koden.
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_EDIT_VERSION/validate
Om API:t Fast returnerar ett fel åtgärdar du problemet och validerar den uppdaterade VCL-versionen igen.
-
Använd snabbaktiverings-API:t activate för att aktivera den nya VCL-versionen.
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_EDIT_VERSION/activate -X PUT
API-snabbreferens för VCL-fragment
I dessa API-frågeexempel används exporterade miljövariabler för att tillhandahålla autentiseringsuppgifter för att autentisera med Fast. Mer information om de här kommandona finns i Snabb API-referens.
-
Hämta aktivt VCL-versionsnummer
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/active
-
Visa alla vanliga VCL-fragment som är kopplade till en tjänst
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION/snippet
-
Granska ett enskilt fragment
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION/snippet/<snippet_name>
<snippet_name>
är namnet på ett fragment, till exempelmy_regular_snippet
. -
Uppdatera ett fragment
Ändra den förberedda JSON-filen och skicka följande begäran:
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION/snippet/<snippet_name> -H 'Content-Type: application/json' -X PUT --data @<filename.json>
-
Ta bort ett enskilt VCL-fragment
Hämta en lista med fragment och använd följande
curl
-kommando med det specifika fragmentnamnet som ska tas bort:code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION/snippet/<snippet_name> -X DELETE
-
Åsidosätt värden i den standardmässiga VCL-koden
Skapa ett fragment med uppdaterade värden och tilldela prioriteten
100
.