Erläuterung der Konfigurationsdateien | AEM

Erkunden Sie eine detaillierte Aufschlüsselung der Konfigurationsdateien im Dispatcher-Server von Adobe Managed Services. Entdecken Sie deren Bedeutung, Benennungskonventionen und praktische Anwendungen.

Beschreibung description

Umgebung

Experience Manager

Problem/Symptome

In diesem Dokument werden alle Konfigurationsdateien aufgeschlüsselt und erläutert, die auf einem standardmäßigen Dispatcher-Server bereitgestellt werden, der in Adobe Managed Services bereitgestellt wird. Verwendung, Benennungskonvention usw.

Namenskonvention

Apache Webserver kümmert sich bei der Zielgruppenbestimmung mit einer optionalen Include- oder Include-Anweisung nicht darum, welche Dateierweiterung von einer Datei ist. Eine ordnungsgemäße Benennung mit Namen, die Konflikte und Verwirrung beseitigen, hilft einer Tonne. Die verwendeten Namen beschreiben idealerweise den Umfang, in dem die Datei angewendet wird, was allen das Leben leichter macht. Wenn alles als .conf bezeichnet wird, wird das wirklich verwirrend. Unzureichend benannte Dateien und Erweiterungen sollten vermieden werden.

Im Folgenden finden Sie eine Liste der verschiedenen benutzerdefinierten Dateierweiterungen und Namenskonventionen, die in einem typischen AMS-konfigurierten Dispatcher verwendet werden.

Dateien unter „conf.d/“

Datei
Dateiziel
Beschreibung
< DATEINAME> .conf
/etc/httpd/conf.d/
Eine standardmäßige Enterprise Linux-Installation verwendet diese Dateierweiterung und den Include-Ordner als Ort, um Einstellungen in httpd.conf zu überschreiben und Ihnen das Hinzufügen zusätzlicher Funktionen auf globaler Ebene in Apache zu ermöglichen.
< DATEINAME> .vhost

Gestaffelt: /etc/httpd/conf.d/available_vhosts/

Aktiv:

/etc/httpd/conf.d/enabled_vhosts/

*Hinweis: *.vhost-Dateien werden nicht in den Ordner enabled_vhosts kopiert, sondern verwenden Symlinks zu einem relativen Pfad zur Datei available_vhosts/ .vhost

*.vhost-Dateien (virtueller Host) sind < VirtualHosts >  -Einträge, um Hostnamen zu entsprechen und es Apache zu ermöglichen, den jeweiligen Domänen-Traffic mit verschiedenen Regeln zu behandeln. Aus der .vhost-Datei werden andere Dateien wie Neuschreibungen, Whitelisting usw. einbezogen.
< DATEINAME> _rewrite.rules
/etc/httpd/conf.d/rewrites/
*_rewrite.rules Dateispeicher mod_rewrite Regeln, die explizit von einer vhost-Datei eingeschlossen und verwendet werden sollen
< DATEINAME> _whitelist.rules
/etc/httpd/conf.d/whitelists/
*_ipwhitelist.rules-Dateien werden aus den *.vhost-Dateien einbezogen. Sie enthalten reguläre IP-Ausdrücke oder erlauben es Ablehnungsregeln, IP-Zulassungsauflistungen zuzulassen. Wenn Sie versuchen, die Anzeige eines virtuellen Hosts auf der Basis von IP-Adressen zu beschränken, generieren Sie eine dieser Dateien und schließen sie aus Ihrer *.vhost-Datei ein.

In "conf.modules.d/"enthaltene Dateien

Datei
Dateiziel
Beschreibung
< DATEINAME> .any
/etc/httpd/conf.dispatcher.d/
Das AEM Dispatcher Apache Module gibt die Einstellungen aus *.any-Dateien zurück. Die standardmäßige übergeordnete Include-Datei lautet "conf.dispatcher.d/dispatcher.any".
< DATEINAME> _farm.any

Staging

:

/etc/httpd/conf.dispatcher.d/available_farms/

Aktiv

:

/etc/httpd/conf.dispatcher.d/enabled_farms/

*Hinweis: Diese Farm-Dateien werden nicht in den Ordner "enabled_farms"kopiert, sondern verwenden Symlinks zu einem relativen Pfad zur Datei "available_farms/_farm.any".

*Farm.any-Dateien sind in der Datei "conf.dispatcher.d/dispatcher.any"enthalten. Diese übergeordneten Farm-Dateien dienen zur Steuerung des Modulverhaltens für jeden Render- oder Website-Typ. Die Dateien werden im Verzeichnis "available_farms"erstellt und mit einem Symlink in den Ordner "enabled_farms"aktiviert.

Sie werden automatisch anhand des Namens aus der Datei "dispatcher.any"eingefügt.

Grundlegende Farm-Dateien beginnen mit 000
, um sicherzustellen, dass sie zuerst geladen werden.

Benutzerdefinierte Farm-Dateien sollten nach geladen werden, indem ihr Nummernschema bei 100_ gestartet wird, um das richtige Einschlussverhalten sicherzustellen.
< DATEINAME> _filters.any
/etc/httpd/conf.dispatcher.d/filters/
*_filters.any-Dateien werden aus den Dateien "conf.dispatcher.d/enabled_farms/*_farm.any"einbezogen. Jede Farm enthält eine Reihe von Regeln, die ändern, welcher Traffic herausgefiltert werden und nicht zu den Renderern gelangen soll.
< DATEINAME> _vhosts.any
/etc/httpd/conf.dispatcher.d/vhosts/
*_vhosts.any-Dateien werden aus den Dateien "conf.dispatcher.d/enabled_farms/*_farm.any"einbezogen. Bei diesen Dateien handelt es sich um eine Liste von Host-Namen oder URI-Pfaden, für die ein Blob-Abgleich durchgeführt wird, um zu bestimmen, welcher Renderer für diese Anfrage verwendet werden soll.
< DATEINAME> _cache.any
/etc/httpd/conf.dispatcher.d/cache/
*_cache.any-Dateien werden aus den Dateien "conf.dispatcher.d/enabled_farms/*_farm.any"einbezogen. Diese Dateien geben an, welche Elemente zwischengespeichert werden und welche nicht.
< DATEINAME> _invalidate_allowed.any
/etc/httpd/conf.dispatcher.d/cache/
*_invalidate_allowed.any-Dateien sind in den Dateien "conf.dispatcher.d/enabled_farms/*_farm.any"enthalten. Sie geben an, welche IP-Adressen Flush- und Invalidierungsanfragen senden dürfen.
< DATEINAME> _clientheaders.any
/etc/httpd/conf.dispatcher.d/clientheaders/
*_clientheaders.any-Dateien sind in den Dateien "conf.dispatcher.d/enabled_farms/*_farm.any"enthalten. Sie geben an, welche Client-Header an jeden Renderer weitergegeben werden sollen.
< DATEINAME> _renders.any
/etc/httpd/conf.dispatcher.d/renders/
*_renders.any-Dateien sind in den Dateien "conf.dispatcher.d/enabled_farms/*_farm.any"enthalten. Sie geben die IP-, Port- und Timeout-Einstellungen für jeden Renderer an. Ein ordnungsgemäßer Renderer kann ein LiveCycle-Server oder ein beliebiges AEM sein, von dem der Dispatcher die Anforderungen abrufen/Proxy bereitstellen kann

Vermeiden von Problemen

Wenn Sie sich an die Namenskonvention halten, können Sie einige ziemlich einfache Fehler vermeiden, die schwerwiegende Folgen haben können. Wir werden einige Beispiele anführen.

Problembeispiel

Als Site-Beispiel für ExampleCo wurden zwei Konfigurationsdateien von den Entwicklern der Dispatcher-Konfigurationen erstellt.

/etc/httpd/conf.d/exampleco.conf

<VirtualHost *:80>

    ServerName  "exampleco"

    ServerAlias "www.exampleco.com"

    .......... SNIP ...............

    <IfModule mod_rewrite.c>

        ReWriteEngine   on

        LogLevel warn rewrite:trace1

        Include /etc/httpd/conf.d/rewrites/exampleco.conf

    </IfModule>

</VirtualHost>

/etc/httpd/conf.d/rewrites/exampleco.conf

RewriteRule /$ /content/exampleco/en.html [ PT,L]

RewriteRule /robots.txt$ /content/dam/exampleco/robots.txt [ PT,L]

POTENZIELLE GEFAHR

A. Die Dateinamen sind identisch.

Wenn die vhost-Datei versehentlich in den Ordner rewrites eingefügt wird und die rewrites-Datei in den Ordner vhosts eingefügt wird. Es scheint ordnungsgemäß mit dem Dateinamen bereitgestellt zu werden, doch Apache gibt einen Fehler aus und das Problem wird nicht sofort erkennbar sein.

Wie dies typischerweise zu einem Problem wird?

Wenn die beiden Dateien an denselben Speicherort heruntergeladen werden, können sie entweder sich selbst überschreiben oder es nicht unterscheidbar machen, wodurch der Implementierungsprozess zu einem Albtraum wird.

B. Die Dateierweiterungen sind identisch und können automatisch eingefügt werden

Die Dateierweiterungen sind identisch und verwenden die automatisch eingeschlossene Erweiterung, die Apache automatisch alle .conf-Dateien in viele der Standardordner einbezieht.

Wie dies typischerweise zu einem Problem wird?

Wenn die vhost-Datei mit der Erweiterung .conf im Ordner /etc/httpd/conf.d/ abgelegt wird, wird versucht, sie in den Speicher auf Apache zu laden, was normalerweise in Ordnung ist, aber wenn die Datei mit den Umschreibungsregeln mit der Erweiterung .conf in der Datei /etc/httpd/conf.d/ -Ordner, wird er automatisch eingefügt und global angewendet, was zu verwirrenden und unerwünschten Ergebnissen führt.

Auflösung resolution

Benennen Sie die Dateien nach ihrem Zweck und schließen Sie sie sicher aus dem Namespace für automatische Einschlussregeln aus.

  • Wenn es sich um einen virtuellen Host-Dateinamen handelt, wird er mit .vhost als Erweiterung.
  • Wenn es sich um eine Rewrite-Regeldatei handelt, benennen Sie sie mit <site>_rewrite.rules als Suffix und Erweiterung. Diese Namenskonvention macht deutlich, für welche Site es sich handelt und dass es sich um einen Satz von Neuschreibungsregeln handelt.
  • Wenn es sich um eine IP-Whitelist-Regeldatei handelt, nennen Sie sie <description>_whitelist.rules als Suffix und Erweiterung. Diese Namenskonvention gibt eine Beschreibung dessen, wofür sie dient und ob es sich um einen Satz von IP-Übereinstimmungsregeln handelt.

Durch Verwendung dieser Namenskonventionen werden Probleme vermieden, wenn eine Datei in ein Verzeichnis zum automatischen Einschließen verschoben wird, zu dem sie nicht gehört.

Beispiel: Platzieren einer Datei mit dem Namen .rules, .any oder .vhost im Ordner "auto include"von /etc/httpd/conf.d/ keinen Einfluss haben.

Wenn eine Anfrage zur Änderung der Bereitstellung please deploy exampleco_rewrite.rules to production dispatchers Die Person, die die Änderungen bereitstellt, kann bereits wissen, dass sie keine neue Site hinzufügt. Sie aktualisiert lediglich die Neuschreibungsregeln, wie durch den Dateinamen angegeben.

Include-Reihenfolge

Wenn Sie die Funktionalität und Konfigurationen von Apache Webserver erweitern, der auf Enterprise Linux installiert ist, haben Sie einige wichtige Bestellungen einschließen Du wirst es verstehen wollen.

A. Grundlegende Apache-Includes

Grundlegende Apache-Include-Reihenfolge. Die Apache-Binärdatei beginnt mit httpd.conf, das eine Include-Option für die conf.d/-Instanz ausführt.*.conf und conf.modules.d/*.conf-Verzeichnisse

Wie in der Abbildung oben gezeigt, betrachtet die HTTPD-Binärdatei nur die der Datei „httpd.conf“ als Konfigurationsdatei. Diese Datei enthält die folgenden Anweisungen:

Include conf.modules.d/*.conf

IncludeOptional conf.d/*.conf

B. AMS-oberste Ebene umfasst

Als wir unseren Standard angewendet haben, haben wir einige zusätzliche Dateitypen und eigene Includes hinzugefügt.

Im Folgenden finden Sie die Grundlinien-Verzeichnisse von AMS und die wichtigsten Includes

Die AMS-Grundlinie umfasst den Start mit einer Datei "dispatcher_vhost.conf", die alle Dateien mit dem *.vhost aus dem Verzeichnis /etc/httpd/conf.d/enabled_vhosts/ enthält. Elemente im Ordner /etc/httpd/conf.d/enabled_vhosts/ sind Symlinks zur tatsächlichen Konfigurationsdatei, die sich in /etc/httpd/conf.d/available_vhosts/ befindet.

Aufbauend auf der Apache-Grundlinie zeigen wir, wie AMS einige zusätzliche Ordner und Top-Level-Includes für conf.d Ordner sowie modulspezifische Verzeichnisse, die unter /etc/httpd/conf.dispatcher.d/

Wenn Apache geladen wird, wird das /etc/httpd/conf.modules.d/02-dispatcher.conf und diese Datei die Binärdatei enthält /etc/httpd/modules/mod_dispatcher.so in den Ausführungsstatus.

LoadModule dispatcher_module modules/mod_dispatcher.so

So verwenden Sie das Modul in der </VirtualHost> legen wir eine Konfigurationsdatei in /etc/httpd/conf.d/ benannt dispatcher_vhost.conf und in dieser Datei sehen Sie, wie Sie die grundlegenden Parameter einrichten, die für das Modul erforderlich sind, um zu funktionieren:

<IfModule disp_apache2.c>

DispatcherConfig conf.dispatcher.d /dispatcher .any

...SNIP...

</IfModule>

Wie Sie oben sehen können, enthält dies die Datei "dispatcher.any"der obersten Ebene, aus der unser Dispatcher-Modul seine Konfigurationsdateien abrufen kann /etc/httpd/conf.dispatcher.d/dispatcher.any

Achten Sie auf den Inhalt dieser Datei:

/farms {

   $include "enabled_farms/*_farm.any"

}

Die Datei "dispatcher.any"auf der obersten Ebene enthält alle aktivierten Farm-Dateien, die in /etc/httpd/conf.dispatcher.d/enabled_farms/ mit dem Dateinamen von <FILENAME>_farm.any die unserer standardmäßigen Namenskonvention folgt.

Später im dispatcher_vhost.conf -Datei, die zuvor erwähnt wurde, führen wir auch eine Include-Anweisung aus, um jede aktivierte virtuelle Host-Datei zu aktivieren, die in /etc/httpd/conf.d/enabled_vhosts/ mit dem Dateinamen von <FILENAME>.vhost die unserer standardmäßigen Namenskonvention folgt.

IncludeOptional /etc/httpd/conf.d/enabled_vhosts/*.vhost

In jeder unserer .vhost-Dateien werden Sie feststellen, dass das Dispatcher-Modul als Standard-Datei-Handler für ein Verzeichnis initialisiert wird. Im Folgenden finden Sie eine .vhost-Beispieldatei, um die Syntax zu illustrieren:

<VirtualHost *:80>

    ServerName    "weretail"

    ServerAlias www.weretail.com weretail.com

    <Directory />

        <IfModule disp_apache2.c>

            ....SNIP....

            SetHandler dispatcher-handler

        </IfModule>

        ....SNIP....

    </Directory>

    ....SNIP....

</VirtualHost>

Nachdem Includes der obersten Ebene aufgelöst wurden, verfügen diese über weitere erwähnenswerte Sub-Includes.  Hier finden Sie eine allgemeine Darstellung dazu, wie Farmen und vhost-Dateien andere Unterelemente enthalten.

C. AMS Virtual Host enthält

ams virtuelle Hosts enthalten Unterelemente. Diese Abbildung zeigt, wie eine .vhost-Datei Dateien aus Variablen, Zulassungslisten und rewrites-Ordnern enthält.

Wenn beliebige .vhost-Dateien von /etc/httpd/conf.d/availabled_vhosts/ -Verzeichnis verknüpfen mit /etc/httpd/conf.d/enabled_vhosts/ -Verzeichnis, das in der laufenden Konfiguration verwendet wird.

Die .vhost-Dateien enthalten Untereinträge, die auf gemeinsamen Elementen basieren, die wir gefunden haben. z. B. Variablen, Zulassungslisten und Neuschreibungsregeln.

Die .vhost-Datei enthält Anweisungen für jede Datei, je nachdem, wo sie in die .vhost-Datei aufgenommen werden muss.  Im Folgenden finden Sie eine Beispielsyntax einer Vhost-Datei als Referenz:

Include /etc/httpd/conf .d /variables/weretail .vars VirtualHost *:80

ServerName    "${MAIN_DOMAIN}"

Directory /          Include /etc/httpd/conf .d /whitelists/weretail *_whitelist.rules

IfModule disp_apache2.c

....SNIP....

SetHandler dispatcher-handler

/IfModule

....SNIP....

/Directory

....SNIP....

IfModule mod_rewrite.c

ReWriteEngine   on

LogLevel warn rewrite:trace1

Include /etc/httpd/conf .d /rewrites/weretail_rewrite .rules

/IfModule /VirtualHost

Wie im obigen Beispiel zu sehen, gibt es einen Include für die Variablen, die in dieser Konfigurationsdatei benötigt und später verwendet werden.

Innerhalb der Datei /etc/httpd/conf.d/variables/weretail.vars können wir sehen, welche Variablen definiert sind:

Define MAIN_DOMAIN dev.weretail.com

Sie können auch eine Zeile sehen, die eine Liste von "whitelist.rules"-Dateien enthält, die beschränken, wer diesen Inhalt basierend auf verschiedenen Kriterien der Whitelist anzeigen kann. Betrachten wir den Inhalt einer der Whitelist-Dateien /etc/httpd/conf.d/whitelists/weretail_mainoffice_whitelist.rules:

<RequireAny>

  Require ip 192.150.16.0/23

</RequireAny>

Es gibt auch eine Zeile, die verschiedene Neuschreibungsregeln enthält. Werfen wir einen Blick auf den Inhalt der weretail_rewrite.rules Datei:

RewriteRule /robots.txt$ /content/dam/weretail/robots.txt [ NC,PT]

RewriteCond %{SERVER_NAME} brand1.weretail.net [ NC]

RewriteRule /favicon.ico$ /content/dam/weretail/favicon.ico [ NC,PT]

RewriteCond %{SERVER_NAME} brand2.weretail.com [ NC]

RewriteRule /sitemap.xml$ /content/weretail/general/sitemap.xml [ NC,PT]

RewriteRule /logo.jpg$ /content/dam/weretail/general/logo.jpg [ NC,PT]

D. AMS Farm Includes

<FILENAME>„_farms.any“ enthält untergeordnete .any-Dateien, um eine Farm-Konfiguration abzuschließen. In diesem Bild können Sie sehen, dass eine Farm alle Dateien der obersten Ebene enthält, die zwischengespeichert sind, Clientheaders, Filter, Renderer und vhosts .any-Dateien

Wenn <FILENAME>_farm.any-Dateien aus dem Verzeichnis /etc/httpd/conf.dispatcher.d/available_farms/ per Symlink mit dem Verzeichnis /etc/httpd/conf.dispatcher.d/enabled_farms/ verknüpft werden, werden sie in der aktiven Konfiguration verwendet.

Die Farm-Dateien enthalten Sub-Includes, die auf Farm-Abschnitten der obersten Ebene wie Cache, Client-Headern, Filtern, Renderern und Hosts basieren.

Die <FILENAME>_farm.any-Dateien enthalten include-Anweisungen für jede Datei, und zwar basierend darauf, wo sie in die Farm-Datei eingeschlossen werden müssen.  Im Folgenden finden Sie die Beispielsyntax für eine <FILENAME>_farm.any-Datei, die eine gute Referenz ist:

/weretailfarm {

    /clientheaders {

        $include "/etc/httpd/conf.dispatcher.d/clientheaders/ams_publish_clientheaders.any"

        $include "/etc/httpd/conf.dispatcher.d/clientheaders/ams_common_clientheaders.any"

    }

    /virtualhosts {

        $include "/etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any"

    }

    /renders {

        $include "/etc/httpd/conf.dispatcher.d/renders/ams_publish_renders.any"

    }

    /filter {

        $include "/etc/httpd/conf.dispatcher.d/filters/ams_publish_filters.any"

        $include "/etc/httpd/conf.dispatcher.d/filters/weretail_search_filters.any"

    }

    ....SNIP....

    /cache {

        ....SNIP....

        /rules {

            $include "/etc/httpd/conf.dispatcher.d/cache/ams_publish_cache.any"

        }

        ....SNIP....

        /allowedClients {

            /0000 {

                /glob "*.*.*.*"

                /type "deny"

            }

            $include "/etc/httpd/conf.dispatcher.d/cache/ams_publish_invalidate_allowed.any"

        }

    ....SNIP....

    }

}

Wie zu sehen ist, verwendet jeder Abschnitt der weretail-Farm eine include-Anweisung und weist nicht die gesamte benötigte Syntax auf.

Sehen wir uns die Syntax einiger dieser Includes an, um zu erfahren, wie die einzelnen Sub-Includes aussehen würden. /etc/httpd/conf.dispatcher.d/vhosts/weretail_publish_vhosts.any:

"brand1.weretail.com"

"brand2.weretail.com"

"www.weretail.comf"

Zu sehen ist hier eine durch neue Zeilen getrennte Liste von Domain-Namen, die von dieser Farm über die anderen gerendert werden sollen.

Als Nächstes sehen wir uns die /etc/httpd/conf.dispatcher.d/filters/weretail_search_filters.any:

/400 { /type "allow" /method "GET" /path "/bin/weretail/lists/*" /extension "json" }

/401 { /type "allow" /method "POST" /path "/bin/weretail/search/" /extension "html" }
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f