設定ファイルの説明 | AEM

Managed Servicesの Dispatcher Adobeサーバーの設定ファイルの詳細な分類を説明します。 その重要性、命名規則および実用的なアプリケーションを明らかにします。

説明 description

環境

Adobe Experience Manager

問題/症状

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

命名規則

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

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

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

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

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

アクティブ:

/etc/httpd/conf.d/enabled_vhosts/

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

*.vhost (仮想ホスト)ファイルは、 < VirtualHosts >  エントリをホスト名に一致させ、Apache が各ドメイントラフィックを異なるルールで処理できるようにします。 .vhost ファイルから、書き換えや許可リストへの登録などの他のファイル。 が含まれます。
< ファイル名> _rewrite.rules
/etc/httpd/conf.d/rewrites/
*_rewrite.rules ファイルストア mod_rewrite vhost ファイルによって明示的に含まれて使用されるルール
< ファイル名> _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です。
< ファイル名> _farm.any

ステージング

:

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

アクティブ

:

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

*メモ:これらの farm ファイルは enabled_farms フォルダーにコピーされませんが、available_farms/ _farm.any ファイルへの相対パスへの symlinks を使用します。

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

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

ベースラインファームファイルは 000 で始まります
最初に読み込まれていることを確認します。

カスタム farm ファイルは、適切なインクルード動作を保証するために 100_で番号スキームを開始してから必要があります。
< ファイル名> _filters.any
/etc/httpd/conf.dispatcher.d/filters/
*_filters.any ファイルは、conf.dispatcher.d/enabled_farms/*_farm.any ファイル内からインクルードされます。 各ファームには、どのトラフィックをフィルターで除外し、レンダラーに送信しないかを変更する一連のルールがあります。
< ファイル名> _vhosts.any
/etc/httpd/conf.dispatcher.d/vhosts/
*_vhosts.any ファイルは、conf.dispatcher.d/enabled_farms/*_farm.any ファイル内からインクルードされます。 これらのファイルは、BLOB マッチングによって照合されて、そのリクエストを処理するためのレンダラーを決定するホスト名または URI パスのリストです。
< ファイル名> _cache.any
/etc/httpd/conf.dispatcher.d/cache/
*_cache.any ファイルは、conf.dispatcher.d/enabled_farms/*_farm.any ファイル内からインクルードされます。 これらのファイルは、キャッシュされる項目とキャッシュされない項目を指定します
< ファイル名> _invalidate_allowed.any
/etc/httpd/conf.dispatcher.d/cache/
*_invalidate_allowed.any ファイルは、conf.dispatcher.d/enabled_farms/*_farm.any ファイル内に含まれています。 フラッシュリクエストと無効化リクエストの送信を許可する IP アドレスを指定します。
< ファイル名> _clientheaders.any
/etc/httpd/conf.dispatcher.d/clientheaders/
*_clientheaders.any ファイルは、conf.dispatcher.d/enabled_farms/*_farm.any ファイル内に含まれています。 各レンダラーに渡すクライアントヘッダーを指定します。
< ファイル名> _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 サーバーで機能および設定を拡張する場合、いくつかの重要な点があります 注文を含める 分かってくれるはず。

回答: Apache ベースラインインクルード

Apache バイナリがで始まる httpd.conf 実行するアクション includeoptionalconf.d/*.conf および conf.modules.d/*.conf ディレクトリ。

上の図で示すように、httpd バイナリはのみを参照します。 httpd.conf 設定ファイルとしてのファイル。 そのファイルには次のステートメントが含まれています。

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

B. AMS トップレベルインクルード

標準を適用する際に、追加のファイルタイプと独自のインクルードをいくつか追加しました。

AMS ベースラインディレクトリとトップレベルインクルードは次のとおりです。

Apache のベースラインに基づいて、追加フォルダーとトップレベルインクルードを AMS でどう作成したかを示します。 conf.d フォルダーと、の下にネストされたモジュール固有のディレクトリ /etc/httpd/conf.dispatcher.d/

Apache が読み込まれると、を取り込みます。 /etc/httpd/conf.modules.d/02-dispatcher.conf また、そのファイルにはバイナリファイルが含まれます /etc/httpd/modules/mod_dispatcher.so を実行状態に変更します。

LoadModule dispatcher_module modules/mod_dispatcher.so

でモジュールを使用するには </VirtualHost> 設定ファイルをにドロップします。 /etc/httpd/conf.d/ 名前付き dispatcher_vhost.conf このファイルの中に、モジュールが機能するために必要な基本的なパラメーターを use セットアップすることがわかります。

<IfModule disp_apache2.c>
DispatcherConfig conf.dispatcher.d /dispatcher .any
...SNIP...
</IfModule>

上記のように、これには Dispatcher モジュールがから設定ファイルを取得するための、トップレベルの dispatcher.any ファイルが含まれます。 /etc/httpd/conf.dispatcher.d/dispatcher.any

このファイルの内容に注意してください。

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

最上位の dispatcher.any ファイルには、に存在するすべての有効なファームファイルが含まれています /etc/httpd/conf.dispatcher.d/enabled_farms/ ファイル名: <FILENAME>_farm.any これは、標準的な命名規則に従います。

の後半 dispatcher_vhost.conf 前述のファイルには、に存在する有効な各仮想ホストファイルを有効にするためのインクルード文も含まれています。 /etc/httpd/conf.d/enabled_vhosts/ 次のファイル名を持つ <FILENAME>.vhost これは、標準的な命名規則に従います。

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 ファイルのリストを含む行も表示されます。 許可リストファイルの中身を見てみましょう /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/available_farms/ ディレクトリは、にシンボリックリンクされます。 /etc/httpd/conf.dispatcher.d/enabled_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