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 ACL, bloque Fastly la demande d’accès à votre site et renvoie un 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 de services rapides.

  • 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 la liste de contrôle d’accès 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 complet > Configuration rapide.
  3. Développez la section Edge ACL .
  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 nécessaire, cochez la case Negated .

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 fonction Blocking disponible dans le module Fastly CDN for 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. Pour 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 s’exécuter immédiatement et vérifier si une requête d’administrateur provient d’une adresse IP autorisée. L’extrait de code s’exécute avant que l’un des fragments de code VCL par défaut du Magento (magentomodule_*) n’ait 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 VCL généré. Dans cet exemple, nous utilisons recv, qui insère le code VCL dans la sous-routine vcl_recv, sous la VCL standard et au-dessus de tous les objets. Pour obtenir la liste des types de fragments de code, reportez-vous à la référence rapide de fragments de code VCL .

  • 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 une erreur 403 Forbidden s’affiche 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. Connectez-vous à l’administrateur.

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

  3. Développez 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 le contenu du fragment de code VCL :

      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. Après le rechargement de la page, cliquez sur Télécharger VCL vers Fastly dans la section Configuration Fastly pour ajouter le fichier à la configuration de 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 le fragment de code VCL à partir de l’Admin ou sous la forme d’une chaîne JSON à l’aide de l’API Fastly. Pour éviter les erreurs de 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.
NOTE
Si vous envoyez le fragment de code VCL depuis l’administrateur, extrayez les valeurs individuelles de l’exemple de code VCL et saisissez-les dans les champs correspondants. Par exemple :
  • Nom : <name of the VCL>
  • Dynamique : <0/1>
  • Type : <type>
  • Priorité : <priority>
  • Contenu : <content>

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 la fonction Fastly Blocking dans Adobe Commerce sur l’administrateur d’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 dans le répertoire $MAGENTO_CLOUD_APP_DIR/var/vcl_snippets_custom de votre environnement. Les fragments de code de ce répertoire sont automatiquement chargés lorsque vous cliquez sur charger VCL vers Fastly 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. Connectez-vous à l’administrateur.

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

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

    Gérer des fragments de code VCL personnalisés

  4. Dans la colonne Action , cliquez sur l’icône des paramètres en regard de l’extrait de code à modifier.

  5. Après le rechargement de la page, cliquez sur Télécharger VCL vers Fastly dans la section Configuration Fastly .

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

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

Suppression du fragment de code VCL personnalisé

  1. Connectez-vous à l’administrateur.

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

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

    Gérer des fragments de code VCL personnalisés

  4. Dans la colonne Action, cliquez sur l’icône de corbeille en regard de l’extrait de code à supprimer.

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

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