Erläuterung der Konfigurationsdateien | AEM

Beschreibung description

Umgebung

Experience Manager

Problem/Symptome

In diesem Dokument werden die einzelnen Konfigurationsdateien aufgeschlüsselt und erläutert, die in einem standardmäßigen, in Adobe Managed Services bereitgestellten Dispatcher-Server bereitgestellt werden. Ihre Verwendung, Namenskonvention usw.

Namenskonvention

Apache Webserver kümmert sich nicht darum, was die Dateierweiterung einer Datei ist, wenn sie sie mit einer Include- oder Include-optionalen Anweisung anvisiert. Wenn Sie sie richtig mit Namen benennen, die Konflikte und Verwirrung vermeiden, hilft Ihnen das. Die verwendeten Namen beschreiben den Anwendungsbereich, auf den die Datei angewendet wird, und erleichtern das Leben. Wenn alles ".conf“ heißt, ist das sehr verwirrend. Vermeiden Sie schlecht benannte Dateien und Erweiterungen.

Nachstehend finden Sie eine Liste der verschiedenen benutzerdefinierten Dateierweiterungen und Benennungskonventionen, die in einer typischen AMS-konfigurierten Dispatcher verwendet werden.

In conf.d/ enthaltene Dateien

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 die Einstellungen in httpd.conf zu überschreiben und es Ihnen zu ermöglichen, zusätzliche Funktionen auf globaler Ebene in Apache hinzuzufügen.
< DATEINAME> .vhost

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

Active:

/etc/httpd/conf.d/enabled_vhosts/

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

*.vhost (Virtual Host)-Dateien sind < VirtualHosts->  Einträge, die Hostnamen entsprechen und es Apache ermöglichen, den Traffic jeder Domain mit unterschiedlichen Regeln zu verarbeiten. Aus der .vhost-Datei werden andere Dateien wie Neuschreibungen, Whitelists usw. ist enthalten.
< FILENAME> _rewrite.rules
/etc/httpd/conf.d/rewrites/
*_rewrite.rules speichern mod_rewrite Regeln, die explizit von einer vhost-Datei eingeschlossen und genutzt werden sollen
< FILENAME> _whitelist.rules
/etc/httpd/conf.d/whitelists/
*_ipwhitelist.rules-Dateien werden aus den *.vhost-Dateien einbezogen. Sie enthält IP-Regex- oder Zulassungsverweigerungsregeln, die eine IP-Zulassungsauflistung auf der Zulassungsliste ermöglichen. Wenn Sie versuchen, die Anzeige eines virtuellen Hosts basierend auf IP-Adressen einzuschränken, generieren Sie eine dieser Dateien und schließen Sie 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-Modul bezieht seine Einstellungen aus *.any-Dateien. Die standardmäßige übergeordnete Include-Datei ist conf.dispatcher.d/dispatcher.any
< DATEINAME> _farm.any

Gestaffelt

:

/etc/httpd/conf.dispatcher.d/available_fields/

Active

:

/etc/httpd/conf.dispatcher.d/enabled_arms/

*Hinweis: Diese Farm-Dateien dürfen nicht in den Ordner enabled_arms kopiert werden, sondern müssen Symlinks zu einem relativen Pfad zur Datei available_fields/ _farm.any verwenden

*farm.any-Dateien sind in der Datei conf.dispatcher.d/dispatcher.any enthalten. Diese übergeordneten Farm-Dateien sind vorhanden, um das Modulverhalten für jeden Render- oder Website-Typ zu steuern. Dateien werden im Verzeichnis available_fields erstellt und mit einem Symlink in das Verzeichnis enabled_fields aktiviert.

Es fügt sie automatisch nach Namen aus der Datei dispatcher.any ein.

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

Benutzerdefinierte Farm-Dateien sollten nach dem Laden geladen werden, indem ihr Nummernschema bei 100_ gestartet wird, um das richtige Include-Verhalten sicherzustellen.
< FILENAME> _filters.any
/etc/httpd/conf.dispatcher.d/filters/
*_filters.any-Dateien werden aus den Dateien conf.dispatcher.d/enabled_fields/*_farm.any einbezogen. Jede Farm verfügt über einen Regelsatz, der ändert, welcher Traffic herausgefiltert werden soll, und nicht zu den Renderern gelangt.
< DATEINAME> _vhosts.any
/etc/httpd/conf.dispatcher.d/vhosts/
*_vhosts.any-Dateien werden aus den Dateien conf.dispatcher.d/enabled_fields/*_farm.any einbezogen. Diese Dateien sind eine Liste von Host-Namen oder URI-Pfaden, die durch Blob-Abgleich abgeglichen werden müssen, um zu bestimmen, welcher Renderer für diese Anfrage verwendet werden soll
< FILENAME> _cache.any
/etc/httpd/conf.dispatcher.d/cache/
*_cache.any-Dateien sind aus den Dateien conf.dispatcher.d/enabled_fields/*_farm.any enthalten. Diese Dateien geben an, welche Elemente zwischengespeichert werden und welche nicht
< FILENAME> _invalidate_allowed.any
/etc/httpd/conf.dispatcher.d/cache/
*_INVALIDATE_ALLOWED.ANY-Dateien sind in den Dateien conf.dispatcher.d/enabled_farm/*_farm.any enthalten. Sie geben an, welche IP-Adressen Flush- und Invalidierungsanfragen senden dürfen.
< FILENAME> _clientheaders.any
/etc/httpd/conf.dispatcher.d/clientheaders/
*_clientheaders.any-Dateien sind in den Dateien conf.dispatcher.d/enabled_fields/*_farm.any enthalten. Sie geben an, welche Client-Kopfzeilen an jeden Renderer weitergeleitet werden sollen.
< FILENAME> _renders.any
/etc/httpd/conf.dispatcher.d/renders/
*_renders.any-Dateien sind in den Dateien conf.dispatcher.d/enabled_fields/*_farm.any enthalten. Sie geben IP-, Port- und Zeitüberschreitungseinstellungen für jeden Renderer an. Ein geeigneter Renderer kann ein LiveCycle-Server oder beliebige AEM-Systeme sein, von denen die Dispatcher die Anfragen abrufen/weiterleiten kann

Vermeidete Probleme

Wenn Sie der Namenskonvention folgen, vermeiden Sie einige ziemlich leicht zu machende Fehler, die katastrophale Folgen haben können. Sehen wir uns einige Beispiele an.

Problembeispiel

Als Site-Beispiel werden für ExampleCo 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 im Ordner rewrites abgelegt wird und die rewrites-Datei im Ordner vhosts abgelegt wird. Es scheint, als würde es von Dateinamen richtig bereitgestellt werden, aber Apache gibt einen Fehler aus und das Problem ist nicht sofort sichtbar.

Wie wird dies normalerweise zu einem Problem?

Wenn die beiden Dateien an denselben Speicherort heruntergeladen werden, können sie sich entweder selbst überschreiben oder sie ununterscheidbar machen, was den Bereitstellungsprozess zu einem Albtraum macht.

b. Die Dateierweiterungen sind identisch und neigen automatisch zum Einschließen

Die Dateierweiterungen sind dieselben und verwenden automatisch eingeschlossene Erweiterungen, die Apache automatisch alle .conf-Dateien in vielen seiner Standardordner einbezieht.

Wie wird dies normalerweise zu einem Problem?

Wenn die vhost-Datei mit der Erweiterung .conf im Ordner /etc/httpd/conf.d/ abgelegt wird, wird versucht, sie in den Speicher von Apache zu laden, was normalerweise in Ordnung ist, aber wenn die Rewrite-Regeldatei mit der Erweiterung .conf im Ordner /etc/httpd/conf.d/ platziert wird, wird sie automatisch eingeschlossen und global angewendet, was verwirrende und unerwünschte Ergebnisse verursacht.

Auflösung resolution

Benennen Sie die Dateien basierend auf ihren Aufgaben und sicher aus dem Namespace der automatisch einzuschließenden Regeln heraus.

  • Wenn es sich um eine Virtual-Host-Datei handelt, wird sie mit .vhost als Erweiterung benannt.
  • Wenn es sich um eine Rewrite-Regeldatei handelt, benennen Sie sie mit <site>_rewrite.rules als Suffix und Erweiterung. Diese Namenskonvention verdeutlicht, für welche Site sie sich befindet und dass es sich um eine Reihe von Neuschreibungsregeln handelt.
  • Wenn es sich um eine Regeldatei der IP-Zulassungsliste handelt, benennen Sie sie <description>_whitelist.rules als Suffix und Erweiterung. Diese Namenskonvention gibt eine Beschreibung dessen, wozu sie gut ist und dass es sich um einen Satz von Regeln zum Abgleichen von IP-Adressen handelt.

Durch die Verwendung dieser Namenskonventionen werden Probleme vermieden, wenn eine Datei in ein automatisch eingebundenes Verzeichnis verschoben wird, zu dem sie nicht gehört.

Wenn Sie beispielsweise eine Datei mit dem Namen ".rules“, ".any“ oder ".vhost“ in den Ordner „auto-include“ von /etc/httpd/conf.d/ einfügen, hat dies keine Auswirkungen.

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

Bestellung einschließen

Bei der Erweiterung der Funktionalität und Konfigurationen in Apache Webserver, der unter Enterprise Linux installiert ist, müssen Sie einige wichtige Include-" beachten.

A. Apache Baseline umfasst

Die Apache-Binärdatei beginnt mit httpd.conf, das eine includeoptional zu den conf.d/*.conf- und conf.modules.d/*.conf-Verzeichnissen durchführt.

Wie im Diagramm oben gezeigt, sieht die httpd-Binärdatei nur auf die httpd.conf-Datei als Konfigurationsdatei aus. Diese Datei enthält die folgenden Anweisungen:

Include conf.modules.d/*.conf
IncludeOptional conf.d/*.conf

B. AMS-Top-Level umfasst

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

Hier finden Sie die Grundlinien-Verzeichnisse von AMS und die Includes der obersten Ebene

Aufbauend auf der Apache-Grundlinie zeigen wir, wie AMS einige zusätzliche Ordner und Includes der obersten Ebene für conf.d Ordner sowie modulspezifische Ordner erstellt hat, die unter /etc/httpd/conf.dispatcher.d/ verschachtelt sind

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

LoadModule dispatcher_module modules/mod_dispatcher.so

Um das Modul in unserem </VirtualHost> zu verwenden, legen wir eine Konfigurationsdatei in /etc/httpd/conf.d/ namens dispatcher_vhost.conf ab und in dieser Datei sehen Sie Verwenden der grundlegenden Parameter, die für das Modul benötigt werden, 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 auf oberster Ebene für unser Dispatcher-Modul, um seine Konfigurationsdateien von /etc/httpd/conf.dispatcher.d/dispatcher.any abzurufen

Achten Sie auf den Inhalt dieser Datei:

/farms {
 $include "enabled_farms/*_farm.any"
}

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

Später in der zuvor erwähnten dispatcher_vhost.conf-Datei wird auch eine Include-Anweisung ausgeführt, um jede aktivierte virtuelle Host-Datei, die in /etc/httpd/conf.d/enabled_vhosts/ mit dem Dateinamen von <FILENAME>.vhost lebt, zu aktivieren, der unserer Standard-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 beispielhafte vhost-Datei mit der Syntax:

<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 die oberste Ebene Includes aufgelöst hat, verfügen sie über weitere Untereinschlüsse, die erwähnt werden sollten. Im Folgenden finden Sie ein allgemeines Diagramm dazu, wie die Dateien „Farmen“ und „vhosts“ andere Unterelemente enthalten

c. AMS Virtual Host umfasst

Wenn alle .vhost-Dateien aus /etc/httpd/conf.d/availabled_vhosts/ Verzeichnis mit dem /etc/httpd/conf.d/enabled_vhosts/ Verzeichnis verknüpft werden, werden sie in der laufenden Konfiguration verwendet.

Die vhost-Dateien enthalten Unterelemente, die auf den von uns gefundenen allgemeinen Elementen basieren. Dinge wie Variablen, Whitelists und Neuschreibungsregeln.

Die .vhost-Datei enthält Include-Anweisungen für jede Datei, je nachdem, wo sie in die .vhost-Datei aufgenommen werden müssen. Im Folgenden finden Sie eine Beispielsyntax für eine .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 Sie im obigen Beispiel sehen können, gibt es ein Include für die Variablen, die in dieser Konfigurationsdatei benötigt werden und später verwendet werden.

In 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 Dateien der Whitelist.rules enthält, die einschränken, wer diese Inhalte anzeigen kann, basierend auf verschiedenen Kriterien der Whitelist. Sehen wir uns nun den Inhalt einer der Dateien der Zulassungsliste /etc/httpd/conf.d/whitelists/weretail_mainoffice_whitelist.rules:

<RequireAny>
 Require ip 192.150.16.0/23
</RequireAny>

Sie können auch eine Zeile sehen, die einen Satz von Neuschreibungsregeln enthält. Sehen wir uns den Inhalt der weretail_rewrite.rules-Datei an:

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 umfasst

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

Die Farm-Dateien enthalten Untereinschlüsse, die auf obersten Abschnitten der Farm basieren wie Cache, ClientHeaders, Filter, Renderings und virtuellen Hosts.

Die <FILENAME>_farm.any-Dateien haben für jede Datei Include-Anweisungen, je nachdem, wo sie in die Farm-Datei aufgenommen werden müssen. Im Folgenden finden Sie eine Beispielsyntax für eine <FILENAME>_farm.any-Datei als Referenz:

/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 Sie jeden Abschnitt für die WeRetail-Farm sehen können, verwenden Sie anstelle der gesamten erforderlichen Syntax eine include-Anweisung.

Sehen wir uns die Syntax einiger dieser Includes an, um eine Vorstellung davon zu erhalten, wie jedes eingeschlossene Teil /etc/httpd/conf.dispatcher.d/vhosts/weretail_publish_vhosts.any würde:

"brand1.weretail.com"
"brand2.weretail.com"
"www.weretail.comf"

Wie Sie sehen können, handelt es sich um eine neue, zeilengetrennte Liste von Domain-Namen, die von dieser Farm aus über die anderen gerendert werden sollen.

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

/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