Introdução ao VCL personalizado
O Fastly oferece suporte a uma versão personalizada do Varnish Configuration Language (VCL) para adaptar a configuração do serviço Fastly às suas necessidades.
Trechos de VCL personalizados são blocos de lógica de VCL adicionados à versão ativa do VCL carregada no site do Adobe Commerce. Um trecho de VCL personalizado modifica como os serviços de cache do Fastly respondem ao tráfego de solicitação. Por exemplo, você pode adicionar um trecho de VCL personalizado para permitir o tráfego de solicitação somente de endereços IP de clientes especificados. Ou crie um trecho para bloquear o tráfego de sites conhecidos por enviar spam de referência para seus sites do Adobe Commerce.
Os snippets de VCL personalizados — gerados, compilados e transmitidos para todos os caches do Fastly — são carregados e ativados sem tempo de inatividade do servidor.
O Fastly suporta dois tipos de snippets de VCL personalizados:
-
Trechos regulares — Os trechos regulares personalizados de VCL são codificados para versões específicas de VCL. Você pode criar, modificar e implantar trechos de VCL regulares a partir da API de Administração ou do Fastly.
-
Trechos dinâmicos — trechos de VCL criados usando a API Fastly. Você pode modificar e implantar trechos dinâmicos sem precisar atualizar a versão do Fastly VCL para o seu serviço.
Recomendamos o uso de trechos de VCL personalizados com Dicionários Edge e Listas de Controle de Acesso (ACL) para armazenar dados usados em seu código personalizado.
-
Dicionário Edge — Armazena dados como pares de valores-chave em um contêiner de dicionário que pode ser referenciado de trechos de VCL personalizados
-
Edge ACL — Armazena os dados do endereço IP do cliente que definem a lista de controle de acesso para regras de bloqueio ou permissão implementadas usando trechos VCL personalizados
O dicionário e os dados de ACL são implantados nos nós do Fastly Edge acessíveis em regiões de rede. Além disso, os dados podem ser atualizados dinamicamente pela rede sem exigir a reimplantação do código de VCL para seu ambiente de preparo ou produção.
Tutorial
Este tutorial e exemplos demonstram o uso de trechos de VCL personalizados regulares com Dicionários do Edge e ACLs do Edge para personalizar a configuração do serviço Fastly para o Adobe Commerce. Para obter informações mais detalhadas, consulte a documentação do Fastly:
- Guia do Fastly VCL — Informações sobre a implementação do Fastly Varnish, extensões do Fastly VCL e recursos para saber mais sobre o Varnish e o VCL.
- Referência de VCL do Fastly — Referência de programação detalhada para desenvolver e solucionar problemas de VCL personalizado do Fastly e trechos de VCL personalizados.
Você pode criar e gerenciar trechos de VCL personalizados no Administrador do Adobe Commerce ou usando a API do Fastly:
-
Administrador do Adobe Commerce — Recomendamos usar o Administrador do Adobe Commerce para gerenciar trechos de VCL personalizados porque ele automatiza o processo para validar, carregar e aplicar as alterações de VCL à configuração do serviço Fastly. Além disso, você pode visualizar e editar os trechos de VCL personalizados adicionados à configuração do serviço Fastly no Admin.
-
API Fastly — Se você não conseguir acessar o Administrador, use a API Fastly para gerenciar trechos de VCL personalizados. Por exemplo, use a API para solucionar problemas de configuração do serviço Fastly quando o site estiver inativo ou para adicionar um trecho de VCL personalizado. Além disso, algumas operações só podem ser concluídas usando a API. Por exemplo, você deve usar a API para reativar uma versão de VCL mais antiga ou para exibir todos os trechos de VCL incluídos em uma versão de VCL especificada. Consulte Referência rápida da API para trechos de VCL.
Exemplo de código de trecho VCL
O exemplo a seguir mostra o trecho de VCL personalizado (formato JSON) que filtra o tráfego por endereço IP do cliente:
{
"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; }"
}
A lógica do VCL no campo content
executa as seguintes ações:
-
Verifica o endereço IP de entrada,
client.ip
em cada solicitação -
Bloqueia qualquer solicitação com um endereço IP incluído na ACL de borda do ACLNAME, retornando um erro
403 Forbidden
A tabela a seguir fornece detalhes sobre os dados principais para trechos de VCL personalizados. Para obter uma referência mais detalhada, consulte a referência trechos de VCL na documentação do Fastly.
API_KEY
active
true
ou false
. Se verdadeiro, o trecho ou a versão está em uso. Clonar um trecho ativo usando seu número de versão.content
dynamic
false
para trechos regulares incluídos no VCL com versão para a configuração do serviço Fastly. Retorna true
para um trecho dinâmico que pode ser modificado e implantado sem a necessidade de uma nova versão de VCL.number
priority
Valor numérico de 1
a 100
que especifica quando o código de trecho de VCL personalizado é executado. Os trechos com valores de prioridade mais baixos são executados primeiro. Se não for especificado, o valor de priority
assumirá 100
como padrão.
Incluir na lista de permissões Qualquer trecho de VCL personalizado com valor de prioridade 5
é executado imediatamente, o que é melhor para o código de VCL que implementa o roteamento de solicitações (bloqueia e alerta e redireciona). A prioridade 100
é melhor para substituir o código de trecho de VCL padrão.
Todos os trechos de VCL padrão incluídos no módulo Magento-Fastly têm priority=50
.
- Atribua uma prioridade alta como
100
para executar o código VCL personalizado após todas as outras funções VCL e substituir o código VCL padrão.
service_id
type
init
(acima das sub-rotinas) e recv
(dentro das sub-rotinas). Para obter detalhes, consulte a referência do Fastly VCL snippets.Gerenciar VCL personalizado do Administrador
Você pode adicionar trechos de VCL personalizados da seção Configuração do Fastly > Trechos de VCL Personalizados no Administrador.
A exibição Fragmentos de VCL personalizados mostra somente fragmentos que foram adicionados por meio do Administrador. Se fragmentos forem adicionados usando a API Fastly, use a API para gerenciá-los.
Os seguintes exemplos mostram como criar e gerenciar trechos de VCL personalizados no Admin e usar módulos do Fastly Edge e dicionários do Edge:
Gerenciar VCL usando a API
A apresentação a seguir mostra como criar arquivos de trecho VCL comuns e adicioná-los à configuração do serviço Fastly usando a API Fastly. Você pode criar e gerenciar os trechos do aplicativo terminal. Você não precisa de uma conexão SSH em um ambiente específico.
Pré-requisitos:
-
Configure seu ambiente Adobe Commerce na infraestrutura em nuvem para os serviços Fastly. Consulte Configurar Fastly.
-
Obter credenciais da API Fastly para autenticar solicitações na API Fastly. Obtenha as credenciais para o ambiente correto: Preparo ou Produção.
-
Salve as credenciais de serviço do Fastly como variáveis de ambiente bash que podem ser usadas nos comandos cURL:
code language-bash export FASTLY_SERVICE_ID=<Service-ID>
code language-bash export FASTLY_API_TOKEN=<API-Token>
As variáveis de ambiente exportadas estão disponíveis somente na sessão bash atual e são perdidas quando você fecha o terminal. É possível redefinir variáveis exportando um novo valor. Para exibir a lista de variáveis exportadas relacionadas ao Fastly:
code language-bash export | grep FASTLY
Adicionar trechos de VCL
Este tutorial fornece as etapas básicas para adicionar trechos personalizados usando a API do Fastly.
Pré-requisitos
-
Seu ambiente deve ser configurado para usar o Fastly CDN. Consulte Configurar serviços do Fastly.
-
Verifique se você está executando a versão mais recente do módulo CDN Fastly para o Magento 2. Consulte Atualizar o Módulo Fastly.
-
Verifique a configuração do ambiente para o serviço Fastly. Consulte Verificar cache rápido.
-
Você deve ter credenciais de Administrador para acessar os ambientes de Preparo e Produção.
Etapa 1: Localizar a versão ativa do VCL
Use a operação get version da API do Fastly para obter o número de versão do VCL ativo:
curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/active
Na resposta JSON, observe o número de versão do VCL ativo retornado na chave number
, por exemplo "number": 99
. Você precisa do número da versão ao clonar o VCL para edição.
{
"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
}
Salve o número da versão ativa em uma variável de ambiente bash para uso em solicitações de API subsequentes:
export FASTLY_VERSION_ACTIVE=<Version>
Etapa 2: clonar a versão do VCL ativo e todos os trechos
Antes de adicionar ou modificar trechos de VCL personalizados, você deve criar uma cópia da versão de VCL ativa para edição. Use a operação clone da API do Fastly:
curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION_ACTIVE/clone -X PUT
Na resposta JSON, o número da versão é incrementado, e o valor da chave ative é false
. Você pode modificar a nova versão do VCL inativa localmente.
{
"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
}
Salve o novo número de versão em uma variável de ambiente bash para uso em comandos subsequentes:
export FASTLY_EDIT_VERSION=<Version>
Etapa 3: Criar um trecho de VCL personalizado
Crie e salve seu código VCL personalizado em um arquivo JSON com o seguinte conteúdo e formato:
{
"name": "<name>",
"dynamic": "0",
"type": "<type>",
"priority": "100",
"content": "<code all in one line>"
}
Os valores incluem:
-
name
— Nome do trecho VCL. -
dynamic
— Indica se este é um trecho regular ou um trecho dinâmico. -
type
— Especifica o local para inserção do trecho gerado, comoinit
(acima das sub-rotinas) erecv
(dentro das sub-rotinas). Consulte Valores de objeto de trecho de VCL do Fastly para obter informações sobre esses valores. -
priority
— Um valor de1
a100
que determina quando o código de trecho de VCL personalizado é executado. Os trechos de VCL personalizados com valores mais baixos são executados primeiro.Todo o código VCL padrão do módulo Fastly VCL tem um
priority
de50
. Se desejar que uma ação ocorra por último ou para substituir o código VCL padrão, use um número maior, como100
. Para executar o código de trecho de VCL personalizado imediatamente, defina a prioridade como um valor mais baixo, como5
. -
content
— O trecho de código VCL a ser executado em uma linha, sem quebras de linha. Consulte Exemplo de trecho de VCL personalizado.
Etapa 4: adicionar o trecho VCL à configuração do Fastly
Use a operação criar trecho da API do Fastly para adicionar o trecho VCL personalizado à versão do VCL.
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>
O <filename.json>
é o nome do arquivo que você preparou na etapa anterior. Repita esse comando para cada trecho de VCL.
Se você receber uma resposta 500 Internal Server Error
do serviço Fastly, verifique a sintaxe do arquivo JSON para verificar se você está carregando um arquivo válido.
Etapa 5: Validar e ativar trechos de VCL personalizados
Depois de adicionar um trecho de VCL personalizado, o Fastly insere o trecho na versão do VCL que você está editando. Para aplicar alterações, conclua as etapas a seguir para validar o código do trecho de VCL e ativar a versão do VCL.
-
Use a operação validar VCL versão da API do Fastly para verificar o código VCL atualizado.
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_EDIT_VERSION/validate
Se a API Fastly retornar um erro, corrija o problema e valide a versão atualizada do VCL novamente.
-
Use a operação ativar da API do Fastly para ativar a nova versão do VCL.
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
Referência rápida da API para trechos de VCL
Esses exemplos de solicitação de API usam variáveis de ambiente exportadas para fornecer as credenciais para autenticação com o Fastly. Para obter detalhes sobre esses comandos, consulte a Referência da API do Fastly.
-
Obter número de versão do VCL ativo
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/active
-
Listar todos os trechos de VCL regulares anexados a um serviço
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION/snippet
-
Revisar um trecho individual
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION/snippet/<snippet_name>
O
<snippet_name>
é o nome de um trecho, comomy_regular_snippet
. -
Atualizar um trecho
Modifique o arquivo JSON preparado e envie a seguinte solicitação:
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>
-
Excluir um trecho de VCL individual
Obtenha uma lista de trechos e use o seguinte comando
curl
com o nome do trecho específico a ser excluído: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
-
Substituir valores no código padrão de VCL do Fastly
Crie um trecho com valores atualizados e atribua uma prioridade de
100
.