Cuando tengo varios hosts virtuales con granjas de caché de AEM Dispatcher separadas configuradas en mi servidor web, ¿cómo vacío la caché correcta de AEM?

Entorno

Servidor HTTP Apache/AEM Dispatcher

Pasos

Hay múltiples soluciones:

  1. Configure un agente de vaciado de Dispatcher por cada granja de Dispatcher, configure el encabezado del host y configure el "ID de usuario del agente" con un usuario que tenga acceso de lectura a las rutas relevantes.
  2. Configure el servidor web para que establezca el encabezado de host correcto cuando se reciban ciertas rutas en el encabezado de una solicitud de descarga CQ-Path. 

En las soluciones siguientes asumimos lo siguiente:

  • Está utilizando el servidor de Apache HTTP 2.2 o una versión posterior.
  • Múltiples hosts virtuales configurados.
  • Múltiples granjas de Dispatcher con cachés separadas.

Por ejemplo:
Configuraciones de httpd VirtualHost de Apache:

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

En la configuración de Dispatcher tiene varias granjas configuradas para manejar diferentes sitios por nombre de host (hosts virtuales):

/virtualhosts
  {
      "*geometrixx.com*"
  }

  /renders
  {
        ...
  }

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

Solución 1: configurar varios agentes de vaciado

Si solo tiene un puñado de granjas de Dispatcher separadas (5 o menos), entonces la configuración de múltiples agentes de descarga es una solución fácil.

  1. Abra http://aem-host:port/miscadmin para cada instancia de publicación de AEM.

  2. Navegar a Replicación => Agentes en Publicaciones

  3. Haga clic en Editar
    .

  4. En el ID de usuario del agente, introduzca el nombre de un usuario que cree más tarde y que está asociado con este agente.  Puede utilizar una convención de nomenclatura con el nombre de host del sitio.  Por ejemplo, flush-agent-www-geometrixx-com 

  5. Seleccione la pestaña Extendida

  6. En Encabezados HTTP agregue otro encabezado.  Como valor introduzca "Host: www.geometrixx.com" donde "www.geometrixx.com" debe ser reemplazado por uno de los hosts DNS de los sitios.

  7. Haga clic en Aceptar para guardar.

  8. Vaya a http://aem-host:port/useradmin y cree el usuario desde el paso 4.

  9. En la pestaña Permisos del usuario, conceda al usuario acceso de lectura a las rutas que desee que el agente pueda vaciar para el sitio al que se hace referencia.  Por ejemplo: /content/geometrixx, /content/dam, /etc, /libs, /apps, /var

  10. Guarde.

  11. Repita los pasos del 1 al 10 con todos los demás sitios en cada instancia de publicación.  Se crea un agente de vaciado para cada sitio en cada instancia de publicación.

  12. En el servidor web, comparta rutas comunes utilizando enlaces simbólicos.  Por ejemplo, puede establecer enlaces simbólicos para /content/dam, /etc, /libs, /apps y /var en una ubicación de caché común.  Entonces /content y cualquier cosa bajo la raíz de la caché se almacena en caché por separado.  He aquí un comando de ejemplo para la carpeta /libs

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

  13. Ahora, cuando active las páginas bajo un sitio específico, la solicitud de vaciado solo se dirige al agente de vaciado correspondiente.

Solución 2: Modificar el encabezado del host en el servidor web

Para manejar las solicitudes de vaciado de Dispatcher para rutas de sitio específicas, utilice reglas como las siguientes en cada una de las secciones de:

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

Para esta solución, también necesita enlaces simbólicos o una granja de Dispatcher compartida para las rutas de contenido compartido como /content/dam, /etc, /libs, /apps y /var.  Consulte el paso 12 de la Solución 1 para obtener más detalles sobre el uso de los enlaces simbólicos.

Esta obra está autorizada con arreglo a la licencia de Reconocimiento-NoComercial-CompartirIgual 3.0 Unported de Creative Commons.  Los términos de Creative Commons no cubren las publicaciones en Twitter™ y Facebook.

Avisos legales   |   Política de privacidad en línea