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 die einzelnen 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 den Umfang, in dem die Datei angewendet wird, und erleichtern das Leben. Wenn alles als .conf bezeichnet wird, wird das wirklich verwirrend. Vermeiden Sie schlecht benannte Dateien und Erweiterungen.
Im Folgenden finden Sie eine Liste der verschiedenen benutzerdefinierten Dateierweiterungen und Benennungskonventionen, die in einem typischen AMS-konfigurierten Dispatcher verwendet werden.
Dateien in "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 stammen andere Dateien wie Neuschreibungen, Whitelisting usw. ist enthalten.<
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
Vermeiden Sie bei der Befolgung der Benennungskonvention einige recht einfache Fehler, die katastrophale Folgen haben können. Lassen Sie uns ein paar Beispiele anführen.
Problembeispiel
Als Site-Beispiel für ExampleCo werden 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 Datei "rewrites"in den Ordner "vhosts"eingefügt wird. Es scheint ordnungsgemäß vom Dateinamen bereitgestellt zu werden, doch gibt Apache einen Fehler aus und das Problem ist nicht sofort ersichtlich.
Wie wird dies normalerweise zu einem Problem?
Wenn die beiden Dateien an denselben Speicherort heruntergeladen werden, können sie sich entweder selbst überschreiben oder es nicht unterscheidbar machen, was den Implementierungsprozess zu einem Albtraum macht.
B. Die Dateierweiterungen sind identisch und können automatisch eingefügt werden
Die Dateierweiterungen sind identisch und verwenden die automatisch eingeschlossene Erweiterung, in die Apache automatisch alle .conf-Dateien in vielen seiner Standardordner einfügt.
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 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 basierend auf dem, was sie tun, und verlassen Sie sie sicher aus dem Namespace für automatische Einschlussregeln.
- 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 verwendet wird und ob es sich um einen Satz von IP-Übereinstimmungsregeln handelt.
Durch die Verwendung dieser Namenskonventionen werden Probleme vermieden, wenn eine Datei in ein Verzeichnis mit automatischem Include 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/
keine Wirkung 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.
Reihenfolge einschließen
Beim Erweitern von Funktionen und Konfigurationen in Apache Webserver, der auf Enterprise Linux installiert ist, haben Sie einige wichtige Bestellungen einschließen Du wirst es verstehen wollen.
A. Grundlegende Apache-Includes
Die Apache-Binärdatei beginnt mit httpd.conf
, die includeoptional
der conf.d/*.conf
und conf.modules.d/*.conf
Verzeichnissen.
Wie im Diagramm oben gezeigt, sucht die HTTPD-Binärdatei nur nach dem httpd.conf
-Datei 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 es im /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
Beachten Sie 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 Beispieldatei 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 aufgelöst wurde, verfügen sie über weitere Untereinschlüsse, die erwähnt werden sollten. Hier finden Sie ein Diagramm auf hoher Ebene darüber, wie Farb- 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. Dinge wie Variablen, Whitelists 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 Sie im obigen Beispiel sehen können, gibt es einen Einschluss für die Variablen, die in dieser Konfigurationsdatei benötigt werden 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>
Sie können auch eine Zeile sehen, die einen Satz von 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 /etc/httpd/conf.dispatcher.d/available_farms/
-Verzeichnis verknüpfen mit /etc/httpd/conf.dispatcher.d/enabled_farms/
-Verzeichnis, das in der laufenden Konfiguration verwendet wird.
Die Farm-Dateien enthalten Untereinschlüsse, die auf Abschnitte der obersten Ebene der Farm wie Cache, Clientheaders, Filter, Renderer und Hosts.
Die <FILENAME>_farm.any
-Dateien enthalten -Anweisungen für jede Datei, je nachdem, wo sie in die Farm-Datei aufgenommen werden müssen. Im Folgenden finden Sie eine Beispielsyntax eines <FILENAME>_farm.any
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 sehen können, verwenden Sie stattdessen eine Include-Anweisung, anstatt die gesamte benötigte Syntax für die Weretail-Farm zu verwenden.
Sehen wir uns die Syntax einiger dieser Includes an, um zu erfahren, wie die einzelnen Unter-Includes aussehen würden. /etc/httpd/conf.dispatcher.d/vhosts/weretail_publish_vhosts.any
:
"brand1.weretail.com"
"brand2.weretail.com"
"www.weretail.comf"
Wie Sie sehen, ist es eine neue, durch Zeilen getrennte Liste von Domänennamen, 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" }