設定ファイルの説明 | AEM

説明 description

環境

Adobe Experience Manager

問題/症状

このドキュメントでは、Adobe Managed Servicesでプロビジョニングされた標準ビルドのDispatcher サーバーにデプロイされた設定ファイルをそれぞれ分類して説明します。 使用方法、命名規則など

命名規則

Apache web サーバーは、include または include オプション文を使用してターゲティングを行っている場合、ファイルの拡張子が何であるかは気にしません。 競合や混乱を排除するように適切に命名すると、非常に助けになります。 使用される名前は、ファイルが適用される範囲を説明するので、作業が容易になります。 すべてにという名前を付けると、非常に混乱します。 不適切な名前のファイルおよび拡張子は避けます。

一般的な AMS 設定済みのDispatcherで使用される様々なカスタムファイル拡張子と命名規則のリストを以下に示します。

conf.d/ に含まれるファイル

ファイル
ファイルの保存先
説明
< FILENAME> .conf
/etc/httpd/conf.d/
デフォルトの Enterprise Linux インストールでは、このファイル拡張子とインクルードフォルダーを httpd.conf の設定を上書きする場所として使用し、Apache のグローバルレベルで追加機能を追加できるようにします。
< ファイル名 > .vhost

ステージング:/etc/httpd/conf.d/available_vhosts/

Active:

/etc/httpd/conf.d/enabled_vhosts/

*注意:.vhost ファイルは enabled_vhosts フォルダーにコピーされませんが、available_vhosts/ .vhost ファイルへの相対パスへの symlinks を使用し

す。

*.vhost (仮想ホスト)ファイルは、VirtualHosts フ > イル < す  エントリをホスト名に一致させ、Apache が各ドメイントラフィックを異なるルールで処理できるようにします。 .vhost ファイルから、書き換えや許可リストへの登録などの他のファイル。 が含まれます。
< FILENAME>_rewrite.rules
/etc/httpd/conf.d/rewrites/
*_rewrite.rules ファイル mod_rewrite は、vhost ファイルによって明示的に含まれて使用されるルールが格納されます
< FILENAME>_whitelist.rules
/etc/httpd/conf.d/whitelists/
*_ipwhitelist.rules ファイルは、*.vhost ファイル内からインクルードされます。 IP の正規表現または IP の許可リストへの登録を許可する拒否ルールが含まれます。 IP アドレスに基づいて仮想ホストの表示を制限しようとする場合は、これらのファイルの 1 つを生成し、*.vhost ファイルからインクルードします。

conf.modules.d/ に含まれるファイル

ファイル
ファイルの保存先
説明
< ファイル名 > .any
/etc/httpd/conf.dispatcher.d/
AEM Dispatcher Apache モジュールは、その設定を*.any ファイルから取得します。 デフォルトの親インクルードファイルは conf.dispatcher.d/dispatcher.anyです。
< FILENAME> _farm.any

ステージング済み

:

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

アクティブ

:

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

*メモ:これらのファームファイルは enabled_farms フォルダーにコピーされませんが、available_farms/ _farm.any ファイルへの相対パスへのシンボリックリンクを使用し

す。

*farm.any ファイルは、conf.dispatcher.d/dispatcher.any ファイル内に含まれています。 これらの親 farm ファイルは、レンダリングまたは web サイトタイプごとにモジュールの動作を制御するために存在します。 ファイルは available_farms ディレクトリに作成され、enabled_farms ディレクトリへのシンボリックリンクによって有効にされます。

dispatcher.any ファイルから名前でそれらを自動的に含めます。

ベースラインファームファイルは、最初に読み込まれるようにするために
000 で始まります。

カスタム farm ファイルは、適切なインクルード動作を保証するために 100_で番号スキームを開始してから必要があります。
< FILENAME>_filters.any
/etc/httpd/conf.dispatcher.d/filters/
*_filters.any ファイルは、conf.dispatcher.d/enabled_farms/*_farm.any ファイル内からインクルードされます。 各ファームには、どのトラフィックをフィルターで除外し、レンダラーに送信しないかを変更する一連のルールがあります。
< FILENAME> _vhosts.any
/etc/httpd/conf.dispatcher.d/vhosts/
*_vhosts.any ファイルは、conf.dispatcher.d/enabled_farms/*_farm.any ファイル内からインクルードされます。 これらのファイルは、BLOB マッチングによって照合されて、そのリクエストを処理するためのレンダラーを決定するホスト名または URI パスのリストです。
< FILENAME>_cache.any
/etc/httpd/conf.dispatcher.d/cache/
*_cache.any ファイルは、conf.dispatcher.d/enabled_farms/*_farm.any ファイル内からインクルードされます。 これらのファイルは、キャッシュされる項目とキャッシュされない項目を指定します
< FILENAME> _invalidate_allowed.any
/etc/httpd/conf.dispatcher.d/cache/
*_invalidate_allowed.any ファイルは、conf.dispatcher.d/enabled_farms/*_farm.any ファイル内に含まれています。 フラッシュリクエストと無効化リクエストの送信を許可する IP アドレスを指定します。
< FILENAME>_clientheaders.any
/etc/httpd/conf.dispatcher.d/clientheaders/
*_clientheaders.any ファイルは、conf.dispatcher.d/enabled_farms/*_farm.any ファイル内に含まれています。 各レンダラーに渡すクライアントヘッダーを指定します。
< FILENAME> _renders.any
/etc/httpd/conf.dispatcher.d/renders/
*_renders.any ファイルは、conf.dispatcher.d/enabled_farms/*_farm.any ファイル内に含まれています。 各レンダラーの IP、ポートおよびタイムアウト設定を指定します。 適切なレンダラーは、LiveCycle サーバーか、Dispatcherで取得/プロキシ化できるリクエストを送信する任意のAEM システムです。

問題の回避

命名規則に従う場合は、最悪の結果を招く可能性のある犯しがちなミスを避けてください。 例をいくつか取り上げます。

問題例

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" }
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f