設定ファイルの説明 | AEM
説明 description
環境
Adobe Experience Manager
問題/症状
このドキュメントでは、Adobe Managed Servicesでプロビジョニングされた標準ビルドのDispatcher サーバーにデプロイされた設定ファイルをそれぞれ分類して説明します。 使用方法、命名規則など
命名規則
Apache web サーバーは、include または include オプション文を使用してターゲティングを行っている場合、ファイルの拡張子が何であるかは気にしません。 競合や混乱を排除するように適切に命名すると、非常に助けになります。 使用される名前は、ファイルが適用される範囲を説明するので、作業が容易になります。 すべてにという名前を付けると、非常に混乱します。 不適切な名前のファイルおよび拡張子は避けます。
一般的な AMS 設定済みのDispatcherで使用される様々なカスタムファイル拡張子と命名規則のリストを以下に示します。
conf.d/ に含まれるファイル
<
FILENAME>
.conf<
ファイル名 >
.vhostステージング:/etc/httpd/conf.d/available_vhosts/
Active:
/etc/httpd/conf.d/enabled_vhosts/
*注意:.vhost ファイルは enabled_vhosts フォルダーにコピーされませんが、available_vhosts/ .vhost ファイルへの相対パスへの symlinks を使用し
す。
>
イル <
す エントリをホスト名に一致させ、Apache が各ドメイントラフィックを異なるルールで処理できるようにします。 .vhost ファイルから、書き換えや許可リストへの登録などの他のファイル。 が含まれます。<
FILENAME>
_rewrite.rules*_rewrite.rules
ファイル mod_rewrite
は、vhost ファイルによって明示的に含まれて使用されるルールが格納されます<
FILENAME>
_whitelist.rulesconf.modules.d/ に含まれるファイル
<
ファイル名 >
.any<
FILENAME>
_farm.anyステージング済み
:
/etc/httpd/conf.dispatcher.d/available_farms/
アクティブ
:
/etc/httpd/conf.dispatcher.d/enabled_farms/
*メモ:これらのファームファイルは enabled_farms フォルダーにコピーされませんが、available_farms/ _farm.any ファイルへの相対パスへのシンボリックリンクを使用し
す。
dispatcher.any ファイルから名前でそれらを自動的に含めます。
ベースラインファームファイルは、最初に読み込まれるようにするために 000 で始まります。
カスタム farm ファイルは、適切なインクルード動作を保証するために 100_で番号スキームを開始してから必要があります。
<
FILENAME>
_filters.any<
FILENAME>
_vhosts.any<
FILENAME>
_cache.any<
FILENAME>
_invalidate_allowed.any<
FILENAME>
_clientheaders.any<
FILENAME>
_renders.any問題の回避
命名規則に従う場合は、最悪の結果を招く可能性のある犯しがちなミスを避けてください。 例をいくつか取り上げます。
問題例
ExampleCo のサイト例として、Dispatcher設定の開発者が 2 つの設定ファイルを作成します。
/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]
危険の可能性
A.ファイル名が同じです。
vhost ファイルが誤って rewrites フォルダーに配置され、rewrites ファイルが vhosts フォルダーに配置された場合、 ファイル名で判断して適切にデプロイされるように思われますが、Apache はエラーをスローし、問題はすぐには明らかになりません。
これは通常どう問題になりますか?
2 つのファイルを同じ場所にダウンロードすると、自分自身を上書きしたり、区別できなくなったりするので、デプロイメントプロセスが悪夢のような状況になります。
B.ファイル拡張子が同じで自動インクルードが発生しやすい
ファイル拡張子が同じで、Apache が多くのデフォルトフォルダーに任意の.conf ファイルを自動で含める、自動インクルード拡張子を使用しています。
これが通常どう問題になるか?
拡張子が.conf の vhost ファイルが/etc/httpd/conf.d/ フォルダーに格納されている場合、Apache はこれをメモリに読み込もうとします。通常はこれで問題ありませんが、拡張子が.conf の書き換えルールファイルが /etc/httpd/conf.d/
フォルダーに格納されると、それが自動的にインクルードされてグローバルに適用されるので、混乱を招き、望ましくない結果が生じます。
解決策 resolution
実行する内容に応じて、自動インクルードルールの名前空間に属さない安全な名前をファイルに付けます。
- 仮想ホストファイルの場合は、
.vhost
を拡張子として使用します。 - 書き換えルールファイルの場合は、
<site>_rewrite.rules
を接尾辞および拡張子として使用します。 この命名規則により、ファイルがどのサイトを対象にしているかや、一連の書き換えルールであることが明確になります。 - IP 許可リストルールファイルの場合は、
<description>_whitelist.rules
を接尾辞および拡張子として使用します。 この命名規則により、その目的と、それが一連の IP マッチングルールであることがわかります。
これらの命名規則を使用すると、属していない自動インクルードディレクトリにファイルが移動された場合の問題を回避できます。
例えば、.rules、.any または.vhost という名前のファイルを /etc/httpd/conf.d/
という自動インクルードフォルダーに格納しても、効果はありません。
デプロイメントの変更リクエストで、変更をデプロイしてい please deploy exampleco_rewrite.rules to production dispatchers
ユーザーが、新しいサイトを追加しているのではなく、ファイル名で示されているように書き換えルールを更新しているだけであることが既にわかっていると言われた場合。
インクルード順序
Enterprise Linux にインストールされた Apache web サーバーで機能と設定を拡張する場合、いくつかの重要な インクルード指示 を理解する必要があります。
A. Apache ベースラインインクルード
Apache バイナリは httpd.conf
で始まり、conf.d/*.conf
ディレクトリと conf.modules.d/*.conf
ディレクトリに対して includeoptional
を実行します。
上記の図でわかるように、httpd バイナリは httpd.conf
ファイルにのみ注目します。それが設定ファイルだからです。 そのファイルには次のステートメントが含まれています。
Include conf.modules.d/*.conf
IncludeOptional conf.d/*.conf
B. AMS トップレベルインクルード
標準を適用する際に、追加のファイルタイプと独自のインクルードをいくつか追加しました。
AMS ベースラインディレクトリとトップレベルインクルードは次のとおりです。
Apache のベースラインに基づいて、追加フォルダーと conf.d
フォルダーのトップレベルインクルードのほか、/etc/httpd/conf.dispatcher.d/
下にネストされたモジュール固有のディレクトリが AMS でどう作成されたかを示します。
Apache が読み込まれると、/etc/httpd/conf.modules.d/02-dispatcher.conf
が取り込まれ、そのファイルにはバイナリファイル /etc/httpd/modules/mod_dispatcher.so
が含まれて実行状態になります。
LoadModule dispatcher_module modules/mod_dispatcher.so
</VirtualHost>
でモジュールを使用するには、dispatcher_vhost.conf
という名前の設定ファイル /etc/httpd/conf.d/
ドロップします。このファイル内で、モジュールが機能するために必要な基本的なパラメーターを使用してセットアップすることがわかります。
<IfModule disp_apache2.c>
DispatcherConfig conf.dispatcher.d /dispatcher .any
...SNIP...
</IfModule>
上記のように、これにはDispatcher モジュールが /etc/httpd/conf.dispatcher.d/dispatcher.any
から設定ファイルを取得するための、トップレベルの dispatcher.any ファイルが含まれます。
このファイルの内容に注意してください。
/farms {
$include "enabled_farms/*_farm.any"
}
トップレベルの dispatcher.any ファイルには、/etc/httpd/conf.dispatcher.d/enabled_farms/
に存在するすべての有効なファームファイルが含まれています。ファイル名は <FILENAME>_farm.any
であり、標準の命名規則に従っています。
前述の dispatcher_vhost.conf
ファイルの後半では、にある有効なバーチャルホストファイルを、標準の命名規則に従って <FILENAME>.vhost
というファイル名で有効にするためのインクルード文も記述して /etc/httpd/conf.d/enabled_vhosts/
ます。
IncludeOptional /etc/httpd/conf.d/enabled_vhosts/*.vhost
それぞれの.vhost ファイルでは、Dispatcher モジュールがディレクトリのデフォルトのファイルハンドラーとして初期化されることに注意してください。 構文を示す.vhost ファイルの例を次に示します。
<VirtualHost *:80>
ServerName "weretail"
ServerAlias www.weretail.com weretail.com
<Directory />
<IfModule disp_apache2.c>
....SNIP....
SetHandler dispatcher-handler
</IfModule>
....SNIP....
</Directory>
....SNIP....
</VirtualHost>
トップレベルのインクルードの解決後に、言及価値のある他のサブインクルードがあります。 ファームファイルおよび vhost ファイルに他のサブ要素が含まれる仕組みの概要図を次に示します。
C. AMS 仮想ホストのインクルード
ディレクトリの.vhost ファイル /etc/httpd/conf.d/availabled_vhosts/
/etc/httpd/conf.d/enabled_vhosts/
ディレクトリにシンボリックリンクされると、実行中の設定に使用されます。
.vhost ファイルには、見つかった共通部分に基づくサブインクルードが含まれています。 変数、許可リスト、書き換えルールなどがあります。
.vhost ファイルには、.vhost ファイルのどこにインクルードする必要があるかに基づいて、各ファイルのインクルード文を記述します。 参考として、.vhost ファイルの構文例を示します。
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
上記の例に示すように、この設定ファイルで必要な変数には、後で使用するインクルードがあります。
ファイルの内部で /etc/httpd/conf.d/variables/weretail.vars
、どのような変数が定義されているか確認できます。
Define MAIN_DOMAIN dev.weretail.com
また、様々な許可リストの基準に基づいて、このコンテンツを閲覧できる人を制限する許可リスト.rules ファイルのリストを含む行も表示されます。 許可リストファイルの 1 つの内容を見てみましょう /etc/httpd/conf.d/whitelists/weretail_mainoffice_whitelist.rules
<RequireAny>
Require ip 192.150.16.0/23
</RequireAny>
一連の書き換えルールを含む行も確認できます。 次に、weretail_rewrite.rules
ファイルを見てみましょう。
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 ファームのインクルード
ディレクトリの <FILENAME>_farm.any
ファイルが /etc/httpd/conf.dispatcher.d/enabled_farms/
ディレクトリ /etc/httpd/conf.dispatcher.d/available_farms/
シンボリックリンクされた場合、実行中の設定に使用されます。
ファームファイルには、キャッシュ、クライアント ヘッダー、フィルター、レンダーおよび vhost など 🔗 ファームの最上位セクション に基づくサブインクルードがあります。
<FILENAME>_farm.any
ファイルには、ファームファイル内のインクルード先に基づいて、各ファイルのインクルード文が含まれます。 参考として、<FILENAME>_farm.any
ファイルの構文例を示します。
/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....
}
}
weretail ファームの各セクションが、必要な構文をすべて使用する代わりに、include ステートメントを使用することがわかります。
これらのインクルードのいくつかの構文を見て、各サブインクルードがどのように表示されるかを把握 /etc/httpd/conf.dispatcher.d/vhosts/weretail_publish_vhosts.any
ます。
"brand1.weretail.com"
"brand2.weretail.com"
"www.weretail.comf"
これは、改行で区切られたドメイン名のリストで、このファームから他のファームより上位にレンダリングする必要があります。
次に、/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" }