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 de código normais—Os trechos de VCL regulares personalizados 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 de borda e Listas de controle de acesso (ACL) para armazenar dados usados em seu código personalizado.
-
Dicionário de borda—Armazena dados como pares de valores chave em um contêiner de dicionário que pode ser referenciado a partir de trechos de VCL personalizados
-
ACL de borda—Armazena os dados do endereço IP do cliente que define 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 de borda e ACLs de borda para personalizar a configuração do serviço Fastly para 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 Varnish e VCL.
- Referência do Fastly VCL—Referência de programação detalhada para desenvolver e solucionar problemas de VCL personalizado 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 o uso do Adobe Commerce Admin para gerenciar trechos de VCL personalizados porque ele automatiza o processo para validar, fazer upload 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 não conseguir acessar o Administrador, use a API do 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 content
O campo 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 ACLNAME edge ACL, retornando um
403 Forbidden
erro
A tabela a seguir fornece detalhes sobre os dados principais para trechos de VCL personalizados. Para obter uma referência mais detalhada, consulte Trechos de VCL referência 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 normais incluído no VCL com versão para a configuração do serviço Fastly. Devoluções true
para um trecho dinâmico que podem ser modificadas e implantadas sem exigir uma nova versão do VCL.number
priority
Valor numérico de 1
para 100
que especifica quando o código do trecho de VCL personalizado é executado. Os trechos com valores de prioridade mais baixos são executados primeiro. Se não especificado, a variável priority
o valor padrão é 100
.
Qualquer trecho de VCL personalizado com um valor de prioridade de 5
é executado imediatamente, o que é melhor para o código de VCL que implementa o roteamento de solicitações (bloqueio e inclui na lista de permissões e redireciona). Prioridade 100
é melhor para substituir o código de trecho de VCL padrão.
Todos trechos de VCL padrão incluídos no módulo Magento-Fastly têm priority=50
.
- Atribuir uma alta prioridade como
100
para executar o código VCL personalizado depois de todas as outras funções do VCL e substituir o código VCL padrão.
service_id
type
init
(acima das sub-rotinas) e recv
(dentro de sub-rotinas). Para obter detalhes, consulte o Fastly Trechos de VCL referência.Gerenciar VCL personalizado do Administrador
Você pode adicionar trechos de VCL personalizados do Configuração do Fastly > Trechos de VCL Personalizados no Admin.
A variável Trechos de VCL personalizados A exibição do mostra somente trechos 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 da terminal aplicação. 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 o Fastly.
-
Obter credenciais da API do Fastly para autenticar solicitações à API do 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 os 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 armazenamento em 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
Uso da API Fastly obter versão operação 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 do JSON, observe o número da versão do VCL ativo retornado na variável number
chave, 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. Uso da API Fastly clone operação:
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 a variável ativo o valor da chave é 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 inserir o trecho gerado, comoinit
(acima das sub-rotinas) erecv
(dentro de sub-rotinas). Consulte Valores de objeto do trecho Fastly VCL para obter informações sobre esses valores. -
priority
—Um valor de1
para100
que determina quando o código do trecho de VCL personalizado é executado. Os trechos de VCL personalizados com valores mais baixos são executados primeiro.Todo 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 mais alto, como100
. Para executar o código de trecho de VCL personalizado imediatamente, defina a prioridade com 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
Uso da API Fastly criar trecho operação 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>
A variável <filename.json>
é o nome do arquivo que você preparou na etapa anterior. Repita esse comando para cada trecho de VCL.
Se você receber um 500 Internal Server Error
resposta do serviço Fastly, verifique a sintaxe do arquivo JSON para verificar se você está fazendo upload de 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.
-
Uso da API Fastly validar versão do VCL operação para verificar o código de 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.
-
Uso da API Fastly ativar operação 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 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>
A variável
<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
curl
comando 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 na variável código Fastly VCL padrão
Crie um trecho com valores atualizados e atribua uma prioridade de
100
.