ServerAliasまたはX-Vhost設定が欠落しているため、Dispatcher設定のデプロイメントが失敗する
ローカル検証で問題が報告されていない場合でも、Cloud ManagerでのDispatcher設定のデプロイメントは、コードスキャンまたはTestCacheInvalidation フェーズで失敗します。 このエラーは、有効なvhostがCloud Managerが内部テストで使用するホスト名と一致しない場合、または一致するvhostがX-Vhost ヘッダーを設定していないため、リクエストがcatch-all vhostに該当する場合に発生します。 default.vhost個のシンボリックリンクがなく、ServerAlias値がなく、invalidate.cacheをブロックするルールを書き換えると、同じ結果が得られます。 少なくとも1つの有効なvhostが127.0.0.1、localhost、*.localおよびクラウドドメインを処理し、X-Vhost ヘッダーを設定することで、エラーが解決されます。
説明 description
問題:コード スキャンでDispatcherのデプロイメントが失敗するか、X-Vhost catch-all エラーが発生してTestCacheInvalidation
説明
Dispatcher バリデーターが 問題が見つかりませんでした と報告しているにもかかわらず、Cloud Manager Dispatcher パイプラインがコードスキャンまたはTestCacheInvalidationで失敗します。 ログには、バリデータが成功し、その後、Expected header X-Vhost to be existing and not: catch-all, got: catch-allなどのエラーまたはHTTP 403を返す無効化が表示されます。 これは、有効なvhostがDispatcherの無効化ホスト名と一致しないか、X-Vhost ヘッダーが設定されていないときに発生し、Cloud Manager テストがcatch-all vhostに該当する場合に発生します。 default.vhost シンボリックリンクが見つからない場合、必要なServerAlias値がない場合、またはルールブロック invalidate.cacheをリダイレクト/書き換える場合に、追加のエラーが発生します。
環境:
- Adobe Experience Manager as a Cloud Service (AEMaaCS)
- AEM Managed Services
- Cloud Manager(コードスキャンとweb階層検証パイプライン)
- Dispatcher
問題/症状:
- Dispatcher テスト エラーのメッセージ:
Test fails. Expected header X-Vhost to be existing and not: catch-all, got: catch-all - Dispatcher バリデーターが 問題が見つかりませんでした を印刷しても、パイプラインがコードスキャンに失敗します。
- Dispatcher無効化テストは、POSTの
Expected 200 but got 403をinvalidate.cache.に返します - Cloud Managerのログにエラーコード
BUILD_WEB_TIER_VALIDATE_WITH_DISPATCHER_TEST_FAILUREまたはBUILD_WEB_TIER_VALIDATE_STATIC_TEST_FAILURE.が表示される
根本原因:
Cloud Managerは内部Dispatcher テストを実行します。このテストでは、127.0.0.1、localhost、*.local、*.adobeaemcloud.com、および*.adobeaemcloud.netからのリクエストに一致するvhostが少なくとも1つ必要です。 これらのテストでは、X-Vhost ヘッダーも返す必要があります。 これらのホスト名が有効なvhostと一致しない場合、または一致したvhostがX-Vhostを設定しない場合、Cloud Managerは応答をcatch-allとして扱い、TestCacheInvalidationおよびその他のテストが失敗します。 default.vhost シンボリックリンクが見つからない場合、カスタム書き換えルールブロックの無効化、またはコピー手順でアーティファクトが見つからない場合も、同じエラーが発生します。
確認方法
- Cloud Manager
>パイプライン に移動し、失敗しているパイプラインを選択して、実行を表示を選択します。build_dispatcher_validation.logとdispatcher_backend_mock.logをダウンロードします。 TestCacheInvalidationまたはX-Vhostのログを検索します。 失敗すると、Expected header X-Vhost ... got catch-allなどのメッセージが表示されます。- エラーが表示されない場合、パイプラインは以前のビルドを再利用している可能性があります。 ダミーのGit コミットを実行して、強制的に再構築して再度チェックします。
解決策 resolution
-
必要なServerAlias値が存在することを確認します。 アクティブなドメインの
conf.d/available_vhosts/*.vhostを開き、少なくとも1つの有効なvhostに、これらのエイリアスがすべて明示的に含まれていることを確認します。code language-none ServerAlias "127.0.0.1" "localhost" "*.local" "*.adobeaemcloud.com" "*.adobeaemcloud.net"
グロブ *だけでは動作する保証はありません。 エイリアスが見つからない場合は、エイリアスを追加して再デプロイします。
2. vhostが有効になっていることを確認します。 必要なServerAlias エントリを持つvhostを指すシンボリックリンクについて、conf.d/enabled_vhosts/を確認してください。 例:default.vhost -> ../available_vhosts/default.vhost。 シンボリックリンクがない場合は、シンボリックリンクを追加してコミットをプッシュします。
3. X-Vhost ヘッダーを設定します。 一致するvhostで、次を追加します。
"’
ヘッダー追加X-Vhost “publish”
"’
その後、テスト要求はcatch-all以外のX-Vhost値を返します。 「書き換えルールなし」を確認すると、応答ヘッダーが削除されます。
4. invalidate.cacheをブロックするルールの書き換えを確認してください。 Cloud Manager テストクライアントを却下するルールを検索します。 例:403を返すGo-http-client ユーザーエージェントに一致するルール:
"’
RewriteCond %{HTTP_USER_AGENT} Go-http-client.$
RewriteRule . - [ R=403,L]
"’
違反するルールを削除またはバイパスして、無効化するとHTTP 200が返されます。 必要に応じて、疑わしい書き換えと再デプロイを一時的に無効にします。
5. 設定をローカルで検証します。
"’
./bin/validate.sh dispatcher/src
"’
出力に「問題が見つかりません」と「構文OK」が表示されていることを確認します。 再デプロイする前に、ローカル構文エラーを修正します。
6. 変更をコミットし、Dispatcher パイプラインを再実行します。 コードスキャンとTestCacheInvalidationを確認してください。
検証
- 最新のCloud Manager パイプラインがコードスキャンに合格したことを確認します。
TestCacheInvalidationエラーは発生しません。 - ログを介したDispatcherの無効化を確認すると、
invalidate.cacheに対するHTTP 403応答がありません。