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/“
<
DATEINAME>
.conf<
DATEINAME>
.vhostGestaffelt: /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
<
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*_rewrite.rules
Dateispeicher mod_rewrite
Regeln, die explizit von einer vhost-Datei eingeschlossen und verwendet werden sollen<
DATEINAME>
_whitelist.rulesIn "conf.modules.d/"enthaltene Dateien
<
DATEINAME>
.any<
DATEINAME>
_farm.anyStaging
:
/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".
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<
DATEINAME>
_vhosts.any<
DATEINAME>
_cache.any<
DATEINAME>
_invalidate_allowed.any<
DATEINAME>
_clientheaders.any<
DATEINAME>
_renders.anyVermeiden 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
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
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
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
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" }