En présence de plusieurs hôtes virtuels avec des batteries de cache AEM Dispatcher distinctes, configurées sur un serveur Web, comment vider le cache correct d'AEM ?

Environnement

Serveur HTTP Apache / répartiteur AEM.

Étapes

Il existe plusieurs solutions :

  1. Configurez un agent de vidage de Dispatcher par batterie de répartiteurs, définissez l'en-tête Host et configurez l'ID utilisateur de l'agent avec un utilisateur disposant d'un accès en lecture aux chemins pertinents.
  2. Configurez le serveur Web pour définir l'en-tête Host correct lorsque certains chemins sont reçus dans l'en-tête CQ-Path d'une requête de vidage. 

Dans les solutions suivantes, nous supposons que :

  • vous utilisez Apache HTTP Server 2.2 ou une version ultérieure ;
  • plusieurs hôtes virtuels (VirtualHosts) sont configurés ;
  • Vous utilisez plusieurs fermes de Dispatcher avec des caches séparés.

Par exemple :
Apache httpd VirtualHost configurations :

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName www.geometrixx.com
    ServerAlias *.geometrixx.com
    DocumentRoot /var/www/html/cache-www-geometrixx-com
     ...  
</VirtualHost>

<VirtualHost *:80>
    ServerName www.geometrixx-outdoors.com
    ServerAlias *.geometrixx-outdoors.com
    DocumentRoot <Global Doc root>/site2
    Include <Configurations specific to site2>
</VirtualHost>
DocumentRoot /var/www/html/cache-www-geometrixx-outdoors-com

Dans la configuration du Dispatcher, plusieurs batteries sont configurées pour gérer différents sites par nom d'hôte (virtualhosts) :

/virtualhosts
  {
      "*geometrixx.com*"
  }

  /renders
  {
        ...
  }

  /cache {
       /docroot "/var/www/html/cache-www-geometrixx-com"

Solution 1 : configuration de plusieurs agents de vidage.

Si vous n'avez qu'une poignée de batteries de Dispatcher distinctes (5 ou moins), la configuration de plusieurs agents de vidage est une solution facile.

  1. Ouvrez http://aem-host:port/miscadmin pour chaque instance de publication AEM.

  2. Accédez à Replication => Agents on Publish

  3. Cliquez sur Modifier

  4. Sous ID utilisateur de l'agent, veuillez saisir le nom d'un utilisateur que vous créez ultérieurement et qui sera associé à cet agent.  Vous pouvez utiliser une convention d'attribution des noms avec le nom d'hôte du site.  Par exemple : "flush-agent-www-geometrixx-com"

  5. Cliquez sur l'onglet « Avancé ».

  6. Sous HTTP Headers, ajoutez un autre en-tête.  En tant que valeur, entrez « Host: www.geometrixx.com » où « www.geometrixx.com » doit être remplacé par l'un des hôtes DNS des sites.

  7. Cliquez sur Ok pour enregister vos modifications.

  8. Accédez à http://aem-host:port/useradmin et créez l'utilisateur à partir de l'étape 4
    .

  9. Dans l'onglet Autorisations de l'utilisateur, accordez à l'utilisateur l'accès en lecture aux chemins que vous souhaitez que l'agent soit autorisé à vider pour le site référencé.  Par exemple : /content/geometrixx, /content/dam, /etc, /libs, /apps, /var.

  10. Enregistrer

  11. Répétez les étapes 1 à 10 pour tous les autres sites sur chaque instance de publication.  Vous allez créer un agent de vidage pour chaque site sur chaque instance de publication.

  12. Sur le serveur Web, partagez des chemins communs à l'aide de liens symboliques.  Par exemple, vous pouvez définir des liens symboliques pour for /content/dam, /etc, /libs, /apps et /var vers un emplacement de cache commun.  Alors /content et tout sous la racine du cache seraient mis en cache séparément.  Exemple de commande pour le dossier /libs.

    ln -s /var/www/html/cache-www-geometrixx-com/libs /var/www/html/shared-cache

  13. Maintenant, lorsque vous activez des pages sous un site spécifique, la demande de vidage ne sera dirigée que vers l'agent de vidage applicable.

Solution 2 : modifier l'en-tête de l'hôte sur le serveur Web.

Pour gérer les demandes de vidage du Dispatcher pour des chemins de site spécifiques, utilisez des règles comme celles-ci dans chaque :

SetEnvIfNoCase CQ-Path ^/content/geometrixx hostnameforfarm=www.geometrixx.com
SetEnvIfNoCase CQ-Path ^/content/geometrixx-outdoors hostnameforfarm=www.geometrixx-outdoors.com 
RequestHeader set Host %{hostnameforfarm}e env=hostnameforfarm

Pour cette solution, vous avez également besoin de liens symboliques ou d'une batterie de Dispatcher partagée pour les chemins de contenu partagés tels que /content/dam, /etc, /libs, /apps et /var.  Consultez l'étape 12 de la solution 1 ci-dessus pour plus d’informations sur l'utilisation des liens symboliques.

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne