VCL personnalisée pour les requêtes de blocage

Vous pouvez utiliser le module CDN Fastly pour Magento 2 pour créer une liste de contrôle d’accès Edge avec une liste d’adresses IP que vous souhaitez bloquer. Vous pouvez ensuite utiliser cette liste avec un extrait de code VCL pour bloquer les requêtes entrantes. Le code vérifie l’adresse IP de la requête entrante. S’il correspond à une adresse IP incluse dans la liste de listes de contrôle d’accès, bloque Fastly la demande d’accès à votre site et renvoie une 403 Forbidden error. Toutes les autres adresses IP clientes sont autorisées.

Conditions préalables :

  • Votre environnement doit être configuré pour utiliser le CDN Fastly. Voir Configuration des services Fastly.

  • Vérifiez que vous exécutez la dernière version du module CDN Fastly pour Magento 2. Voir Mise à niveau du module Fastly.

  • Vérifiez la configuration de l’environnement pour le service Fastly. Voir Vérification de la mise en cache rapide.

  • Vous devez disposer des informations d’identification d’administrateur pour accéder aux environnements d’évaluation et de production.

  • Liste des adresses IP du client à bloquer

Création d’une liste de contrôle d’accès Edge pour le blocage des adresses IP du client

Vous créez une liste de contrôle d’accès Edge pour définir la liste des adresses IP à bloquer. Après avoir créé la liste de contrôle d’accès, vous pouvez l’utiliser dans un extrait de code VCL personnalisé pour gérer l’accès à votre site d’évaluation ou de production.

Gérez l’accès pour les sites d’évaluation et de production en créant l’ACL Edge avec le même nom dans les deux environnements. Le code du fragment de code VCL s’applique aux deux environnements.

  1. Connectez-vous à l’administrateur.
  2. Accédez à Magasins > Paramètres > Configuration > Avancé > Système > Cache de page complète > Configuration rapide.
  3. Développez l’objet ACL Edge .
  4. Cliquez sur Ajouter ACL pour créer une liste. Pour cet exemple, nommez la liste "liste bloquée".
  5. Saisissez les valeurs des adresses IP dans la liste. Toutes les adresses IP du client ajoutées à cette liste sont bloquées et ne peuvent pas accéder au site.
  6. Si vous le souhaitez, sélectionnez la variable Négé si nécessaire.

Vous référencez l’ACL Edge par nom dans votre code de fragment de code VCL.

Création de la VCL personnalisée pour la liste bloquée

NOTE
Cet exemple montre aux utilisateurs avancés comment créer un extrait de code VCL pour configurer des règles de blocage personnalisées à charger vers le service Fastly. Vous pouvez configurer une liste bloquée ou une liste autorisée en fonction du pays à partir de l’administrateur Adobe Commerce à l’aide de la variable Blocage fonctionnalité disponible dans le module Fastly CDN pour Magento 2.

Après avoir défini l’ACL Edge, vous pouvez l’utiliser pour créer le fragment de code VCL afin de bloquer l’accès aux adresses IP spécifiées dans l’ACL. Vous pouvez utiliser le même extrait de code VCL dans les environnements d’évaluation et de production, mais vous devez le charger séparément dans chaque environnement.

Le code de fragment de code VCL personnalisé suivant (format JSON) indique la logique permettant de bloquer les requêtes entrantes avec une adresse IP du client correspondant à une adresse dans la liste de contrôle d’accès de la liste bloquée.

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

Avant de créer un fragment de code basé sur cet exemple, vérifiez les valeurs pour déterminer si vous devez apporter des modifications :

  • name: nom du fragment de code VCL. Dans cet exemple, nous avons utilisé le nom blocklist.

  • priority: détermine le moment où le fragment de code VCL s’exécute. La priorité est 5 pour exécuter immédiatement et vérifier si une demande d’administrateur provient d’une adresse IP autorisée. Le fragment de code s’exécute avant l’un des fragments de code VCL du Magento par défaut (magentomodule_*) a une priorité de 50. Définissez la priorité de chaque fragment de code personnalisé sur une valeur supérieure ou inférieure à 50 selon le moment où vous souhaitez que votre fragment de code s’exécute. Les fragments de code dont les numéros de priorité sont plus bas s’exécutent en premier.

  • type: spécifie le type de fragment de code VCL qui détermine l’emplacement du fragment de code dans le code VCL généré. Dans cet exemple, nous utilisons recv, qui insère le code VCL dans la variable vcl_recv sous-routine, sous le VCL standard et au-dessus de tous les objets. Voir Référence rapide à l’extrait de code VCL pour la liste des types de fragments de code.

  • content: extrait de code VCL à exécuter, qui vérifie l’adresse IP du client. Si l’adresse IP se trouve dans l’ACL Edge, elle est bloquée et ne peut pas accéder à l’aide d’une 403 Forbidden pour l’ensemble du site web. Toutes les autres adresses IP clientes sont autorisées.

Après avoir examiné et mis à jour le code de votre environnement, utilisez l’une des méthodes suivantes pour ajouter le fragment de code VCL personnalisé à votre configuration de service Fastly :

Ajout du fragment de code VCL personnalisé

  1. Connexion à l’administrateur.

  2. Cliquez sur Magasins > Paramètres > Configuration > Avancé > Système.

  3. Développer Cache de page complète > Configuration rapide > Fragments de code VCL personnalisés.

  4. Cliquez sur Créer un fragment de code personnalisé.

  5. Ajoutez les valeurs du fragment de code VCL :

    • Nomblocklist

    • Typerecv

    • Priorité5

    • Ajoutez la variable VCL fragment de contenu :

      code language-conf
      if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
      
  6. Cliquez sur Créer pour générer le fichier de fragment de code VCL avec le modèle de nom type_priority_name.vcl, par exemple recv_5_blocklist.vcl

  7. Une fois la page rechargée, cliquez sur Chargement rapide de VCL dans le Configuration rapide pour ajouter le fichier à la configuration du service Fastly.

  8. Après les chargements, actualisez le cache en fonction de la notification dans la partie supérieure de la page.

Valide rapidement la version mise à jour du code VCL pendant le processus de chargement. Si la validation échoue, modifiez le fragment de code VCL personnalisé pour résoudre le problème. Ensuite, chargez à nouveau le VCL.

Exemples VCL supplémentaires pour le blocage des requêtes

Les exemples suivants montrent comment bloquer des requêtes à l’aide d’instructions de condition intégrées au lieu d’une liste ACL.

WARNING
Dans ces exemples, le code VCL est formaté en tant que charge utile JSON pouvant être enregistrée dans un fichier et envoyée dans une requête d’API Fastly. Vous pouvez envoyer la variable Fragment VCL de l’administrateurou sous la forme d’une chaîne JSON à l’aide de l’API Fastly. Pour empêcher la validation lorsque vous utilisez l’API Fastly avec une chaîne JSON, vous devez utiliser une barre oblique inverse pour échapper les caractères spéciaux.

Voir Utilisation de fragments de code VCL dynamiques dans la documentation Fastly VCL .

Exemple de code VCL : bloc par code de pays

Cet exemple utilise le code de pays ISO 3166-1 à deux caractères pour le pays associé à l’adresse IP.

{
  "name": "blockbycountrycode",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if ( client.geo.country_code == \"HK\" ) { error 405 \"Not allowed\";}"
}
NOTE
Au lieu d’utiliser un extrait de code VCL personnalisé, vous pouvez utiliser le Blocage dans Adobe Commerce sur l’administration de l’infrastructure cloud pour configurer le blocage par code de pays ou une liste de codes de pays.

Exemple de code VCL : bloc par en-tête de requête HTTP User-Agent

{
  "name": "blockbyuseragent",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if ( req.http.User-Agent ~ \"(UCBrowser|MQQBrowser|LieBaoFast|Mb2345Browser)\" ) {error 405 \"Not allowed\";}"
}
NOTE
Au lieu de charger manuellement des fragments de code VCL personnalisés, vous pouvez ajouter des fragments de code à l’événement $MAGENTO_CLOUD_APP_DIR/var/vcl_snippets_custom dans votre environnement. Les fragments de code de ce répertoire sont automatiquement chargés lorsque vous cliquez sur Chargement rapide de VCL dans l’administrateur Commerce. Voir Déploiement de fragments de code VCL personnalisés automatisé dans la documentation Fastly CDN pour Magento 2 .

Modification du fragment de code VCL personnalisé

  1. Connexion à l’administrateur.

  2. Cliquez sur Magasins > Paramètres > Configuration > Avancé > Système.

  3. Développer Cache de page complète > Configuration rapide > Fragments de code VCL personnalisés.

    Gestion des fragments de code VCL personnalisés

  4. Dans le Action , cliquez sur l’icône des paramètres en regard du fragment de code à modifier.

  5. Une fois la page rechargée, cliquez sur Chargement rapide de VCL dans le Configuration rapide .

  6. Une fois le transfert terminé, actualisez le cache en fonction de la notification dans la partie supérieure de la page.

WARNING
La variable Fragments de code VCL personnalisés L’option de l’interface utilisateur affiche uniquement les fragments de code ajoutés par le biais de l’administrateur Adobe Commerce. Si vous ajoutez des fragments de code à l’aide de l’API Fastly, utilisez l’API pour gérer les.

Suppression du fragment de code VCL personnalisé

  1. Connexion à l’administrateur.

  2. Cliquez sur Magasins > Paramètres > Configuration > Avancé > Système.

  3. Développer Cache de page complète > Configuration rapide > Fragments de code VCL personnalisés.

    Gestion des fragments de code VCL personnalisés

  4. Dans le Action , cliquez sur l’icône de corbeille en regard du fragment de code à supprimer.

  5. Dans la fenêtre modale suivante, cliquez sur DELETE et activez une nouvelle version.

WARNING
La variable Fragments de code VCL personnalisés L’option de l’interface utilisateur affiche uniquement les fragments de code ajoutés par le biais de l’administrateur Adobe Commerce. Si vous ajoutez des fragments de code à l’aide de l’API Fastly, utilisez l’API pour gérer les.
recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26