構成ファイルの説明

このドキュメントでは、Adobe Managed Services でプロビジョニングされた標準ビルドのディスパッチャーサーバーでデプロイされた各構成ファイルについて詳細に説明します。例:使用方法、命名規則など

命名規則

Apache Webserver では、include または includeoptional ステートメントを使用してターゲットを設定する際に、ファイルの拡張子が何であるかは調べません。  競合や混乱を排除するような名前を付けると非常に便利です。使用される名前は、ファイルの適用範囲を説明し、作業を容易にします。すべてに .conf という名前を付けると、非常にわかりにくくなります。ファイルと拡張子には適切な名前を付けてください。  以下は、一般的な AMS 構成のディスパッチャーで使用されるさまざまなカスタムファイル拡張子と命名規則のリストです。

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

ファイル

ファイルの保存先

説明

<FILENAME>.conf

/etc/httpd/conf.d/

デフォルトの Enterprise Linux インストールでは、httpd.conf の設定を上書きし、Apache においてグローバルレベルで機能を追加できる場所として、このファイル拡張子とインクルードフォルダーを使用します。

<FILENAME>.vhost

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

アクティブ:

/etc/httpd/conf.d/enabled_vhosts/

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

 

*.vhost(仮想ホスト)ファイルはホスト名と一致し、Apache が各ドメイントラフィックを異なるルールで処理できるようにする <VirtualHosts > エントリです。.vhost ファイルの他のファイル(書き換え、ホワイトリストなど)が含まれます。

<FILENAME>_rewrite.rules

/etc/httpd/conf.d/rewrites/

*_rewrite.rules ファイルには、vhost ファイルで明示的に含まれて消費される mod_rewrite ルールが格納されます

<FILENAME>_whitelist.rules

/etc/httpd/conf.d/whitelists/

*_ipwhitelist.rules ファイルは、*.vhost ファイル内からインクルードされます。IP 正規表現を含むか、拒否ルールを許可して IP のホワイトリスト登録を許可します。IP アドレスに基づいて仮想ホストの表示を制限しようとしている場合、これらのファイルの 1 つを生成し、*.vhost ファイルからインクルードします。

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

ファイル

ファイルの保存先

説明

<FILENAME>.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 ファイル内に含まれています。これらの親ファームファイルは、レンダータイプまたは Web サイトタイプごとにモジュールの動作を制御するために存在します。ファイルは available_farms ディレクトリに作成され、enabled_farms ディレクトリへのシンボリックリンクで有効になります。

 

dispatcher.any ファイルから名前によって自動的にインクルードされます。

 

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

カスタムファームファイルは、適切なインクルード動作を確保するために、番号スキームを 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 ファイル内からインクルードされます。これらのファイルは、ホスト名または URI パスのリストであり、そのリクエストの処理にどのレンダラーを使用するかを決定するため、BLOB マッチングによって照合されます。

<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、ポート、およびタイムアウト設定を指定します。適切なレンダラーは、ライブサイクルサーバーの場合や、ディスパッチャーがリクエストをフェッチ/プロキシできる AEM システムの場合があります。

回避された問題

命名規則に従うと、壊滅的な結果につながる可能性がある、非常に犯しやすい間違いを避けることができます。  いくつかの例を取り上げます。

問題の例

ExampleCo のサイト例として、ディスパッチャー設定の開発者が 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]

潜在的なリスク

ファイル名が同じ

vhost ファイルが誤って rewrites フォルダーに置かれ、rewrites ファイルが vhosts フォルダーに置かれた場合。  ファイル名によって適切にデプロイされているように見えますが、Apache はエラーをスローし、問題が明らかになるまでしばらくかかります。

これによって発生する一般的な問題

2 つのファイルが同じ場所にダウンロードされると、それらが上書きされたり、区別できなくなったりし、デプロイメントプロセスが非常に困難になることがあります。

ファイル拡張子が同じで、自動インクルード傾向がある

ファイル拡張子が同じで、Apache がそのデフォルトフォルダーの多くに .conf ファイルを自動的に含める自動組み込み拡張子を使用します。

これによって発生する一般的な問題

拡張子 .conf が付いた vhost ファイルが /etc/httpd/conf.d/ フォルダーに配置されている場合、一般的に問題のない Apache 上のメモリを試行して読み込みますが、拡張子 .conf が付いた書き換えルールファイルが /etc/httpd/conf.d/ フォルダーに配置されている場合、自動的に含まれてグローバルに適用され、混乱を招いて望まない結果が引き起こされます。

 

 

提案ソリューション

自動インクルードルールの名前空間から何を実行し、安全に実行することに基づいて、ファイルに名前を付けます。

仮想ホストファイルの場合は、名前に拡張子 .vhost を付けます。

書き換えルールファイルの場合は、名前にサフィックスおよび拡張子 <site>_rewrite.rules を付けます。この命名規則により、どのサイト向けであるか、および書き換えルールのセットであることが明確になります。

IP ホワイトリストルールファイルの場合は、名前にサフィックスおよび拡張子 <description>_whitelist.rules を付けます。この命名規則は、そのファイルの用途の説明と、一連の IP マッチングルールであることを示します。

ファイルが所属していない auto-include ディレクトリに移動した場合、これらの命名規則を使用することで問題が回避されます。

たとえば、/etc/httpd/conf.d/ の auto-include フォルダーに .rules、.any、または .vhost という名前のファイルを配置しても影響はありません。

デプロイメントの変更要求に「exampleco_rewrite.rules を実稼働ディスパッチャーにデプロイしてください」と書かれている場合、変更をデプロイする人物は、自分たちが新しいサイトを追加していないことが既にわかっているので、ファイル名で示される書き換えルールを更新します。

インクルード順序

Enterpise Linux にインストールされた Apache Webserver の機能や構成を拡張する際には、いくつかの重要なインクルード順序を理解しておく必要があります。

Apache ベースラインのインクルード

Apache ベースラインのインクルード順序。apache バイナリの先頭には httpd.conf が付き、conf.d/*.conf および conf.modules.d/*.conf ディレクトリに対して includeoptional を実行します。

上記の図のように、httpd バイナリは httpd.conf ファイルを構成ファイルとして確認するだけです。  そのファイルには、次のステートメントが含まれています。

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

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

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

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

AMS ベースラインのインクルードは dispatcher_vhost.conf で開始します。これには、/etc/httpd/conf.d/enabled_vhosts/ ディレクトリからの、*.vhost が付くファイルが含まれます。/etc/httpd/conf.d/enabled_vhosts/ ディレクトリ内の項目は、/etc/httpd/conf.d/available_vhosts/ にある実際の構成ファイルへのシンボリックリンクです。

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 /> でモジュールを使用するには、構成ファイルを dispatcher_vhost.conf という名前で/etc/httpd/conf.d/ にドロップすると、このファイル内で、モジュールが機能するために必要な基本パラメーターのセットアップを使用することがわかります。

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

ご覧のとおり、これにはディスパッチャーモジュール用にトップレベルの 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 ファイルで後から include ステートメントを実行し、/etc/httpd/conf.d/enabled_vhosts/ に格納されている各仮想ホストファイルを有効化します。ファイル名は、標準の命名規則に従い、<FILENAME>.vhost になります。

 

 
IncludeOptional /etc/httpd/conf.d/enabled_vhosts/*.vhost

各 .vhost ファイルでは、ディスパッチャーモジュールがディレクトリのデフォルトのファイルハンドラとして初期化されることに注意してください。  次に、構文を示す .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>

トップレベルのインクルードが解決した後には、言及する価値がある他のサブインクルードがあります。  次の図は、ファームおよび vhosts ファイルに他のサブ要素がどのように含まれているかを大まかに示したものです

AMS 仮想ホストのインクルード

ams 仮想ホストにはサブアイテムが含まれます。この図は、1 つの .vhost ファイルに、変数やホワイトリスト、書き換えフォルダーのファイルがどのように含まれているかを示しています。

/etc/httpd/conf.d/availabled_vhosts/ ディレクトリの .vhost ファイルのシンボリックリンクが /etc/httpd/conf.d/enabled_vhosts/ ディレクトリに作成されると、そのファイルは実行中の構成で使用されます。

.vhost ファイルには、見つかった共通部分  (変数、ホワイトリスト、書き換えルールなど)に基づいたサブインクルードがあります。

.vhost ファイルには、.vhost ファイルのどこに含める必要があるかに基づいて、各ファイルの include ステートメントがあります。  以下の 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

また、さまざまなホワイトリスト条件に基づいてこのコンテンツを表示できるユーザーを制限する、whitelist.rules ファイルのリストを含む行も確認できます。  ホワイトリストファイル /etc/httpd/conf.d/whitelists/weretail_mainoffice_whitelist.rules の 1 つのコンテンツを確認してみましょう。

<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]

AMS Farm のインクルード

<FILENAME>_farms.any には、ファーム構成を完了するためのサブ.any ファイルが含まれます。この図では、ファームに各トップレベルセクションファイルのキャッシュ、クライアントヘッダー、フィルター、レンダリング、vhosts .any ファイルが含まれていることがわかります。

/etc/httpd/conf.dispatcher.d/available_farms/ ディレクトリの <FILENAME>_farm.any ファイルのシンボリックリンクが /etc/httpd/conf.dispatcher.d/enabled_farms/ ディレクトリに作成されると、そのファイルは実行中の構成で使用されます。

ファームファイルには、ファームのトップレベルのセクション(キャッシュ、クライアントヘッダー、フィルター、レンダリング、vhost など)に基づいていくつかのサブインクルードがあります。

<FILENAME>_farm.any ファイルには、ファームファイルのどこに含める必要があるかに基づいて、各ファイルの include ステートメントがあります。  以下の <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" }
アドビのロゴ

アカウントにログイン