Wenn ich mehrere virtuelle Hosts mit separaten AEM-Dispatcher-Cache-Bereichen auf meinem Webserver konfiguriert habe, wie kann ich dann den korrekten Cache auf dem AEM-Server leeren?

Umgebung

Apache-HTTP-Server / AEM-Dispatcher

Schritte

Es gibt mehrere Lösungen:

  1. Richten Sie einen Dispatcher-Lösch-Agent pro Dispatcher-Bereich ein. Legen Sie dann den Host-Header fest und konfigurieren Sie die „Agent-Benutzer-ID“ mit einem Benutzer, der Lesezugriff auf relevante Pfade hat.
  2. Konfigurieren Sie den Webserver so, dass der richtige Hostheader festgelegt wird, wenn bestimmte Pfade im CQ-Path-Header einer Löschungsanforderung empfangen werden. 

In den untenstehenden Lösungen nehmen wir Folgendes an:

  • Sie verwenden Apache HTTP-Server 2.2 oder eine neuere Version
  • Mehrere VirtualHosts konfiguriert
  • Mehrere Dispatcher-Farmen mit separaten Caches

Beispiel:
Konfigurationen mit Apache-httpd-VirtualHost:

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

In der Dispatcher-Konfiguration haben Sie mehrere Farmen, die so konfiguriert sind, dass sie verschiedene Bereiche nach Hostnamen (virtualhosts) verwalten:

/virtualhosts
  {
      "*geometrixx.com*"
  }

  /renders
  {
        ...
  }

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

Lösung 1: Richten Sie mehrere Flush-Agenten ein.

Wenn Sie nur wenige separate Dispatcher-Farmen (5 oder weniger) haben, ist die Konfiguration mehrerer Flush-Programme eine einfache Lösung.

  1. Öffnen Sie „http://aem-host:port/miscadmin“ für jede AEM-Veröffentlichungsinstanz

  2. Navigieren Sie zu „Replikation => Agenten auf Veröffentlichungsinstanz“

  3. Klicken Sie auf „Bearbeiten“

  4. Geben Sie unter „Agent-User-ID“ den Namen eines Benutzers ein, den Sie später erstellen und der diesem Agenten zugeordnet wäre.  Sie können eine Namenskonvention mit dem Hostnamen der Seite verwenden.  Zum Beispiel: „flush-agent-www-geometrixx-com“

  5. Wählen Sie die Registerkarte „Erweitert“ aus

  6. Fügen Sie einen anderen Header unter HTTP-Header hinzu  Geben Sie „Host: www.geometrixx.com“ ein, wobei „www.geometrixx.com“ durch einen der DNS-Hosts der Websites ersetzt werden sollte.

  7. Klicken Sie zum Speichern auf „Ok“

  8. Gehen Sie zu „http://aem-host:port/useradmin“ und erstellen Sie den Benutzer aus Schritt 4

  9. Auf der Registerkarte Berechtigungen des Benutzers gewähren Sie dem Benutzer Lesezugriff auf alle Pfade, die der Agent für die referenzierte Seite freigeben soll.  Zum Beispiel: „/content/geometrixx, /content/dam, /etc, /libs, /apps, /var

  10. Speichern

  11. Wiederholen Sie die Schritte 1 bis 10 für alle anderen Seiten in jeder Veröffentlichungsinstanz.  Sie erstellen einen Flush-Agenten für jede Seite in jeder Veröffentlichungsinstanz.

  12. Geben Sie auf dem Webserver gemeinsame Pfade mit „symlinks“ frei.  Zum Beispiel könnten Sie „symlinks“ für /content/dam, /etc, /libs, /apps und /var auf einen gemeinsamen Cache-Speicherort setzen.  Dann würde „/content“ und alles, was sich untergeordnet des Caches befindet, getrennt zwischengespeichert.  Ein Beispielbefehl für den Ordner „/libs“:

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

  13. Wenn Sie jetzt Seiten unter einer bestimmten Site aktivieren, wird die Löschungsanforderung nur an den entsprechenden Flush-Agenten
    weitergeleitet.

Lösung 2: Ändern Sie den Host-Header für den Webserver.

Um mit Dispatcher-Löschungsanforderungen für bestimmte Site-Pfade umzugehen, verwenden Sie stets Regeln wie diese:

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

Für diese Lösung benötigen Sie auch entweder symlinks oder eine gemeinsame Dispatcher-Farm für gemeinsame Pfade wie /content/dam, /etc, /libs, /apps und /var.  Details zur Verwendung von Symlinks finden Sie in Schritt 12 unter Lösung 1 (oben).

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie