ServerAlias 또는 X-Vhost 구성이 누락되어 Dispatcher 구성 배포에 실패합니다.

로컬 유효성 검사 보고서에 문제가 없는 경우에도 Cloud Manager의 Dispatcher 구성 배포가 코드 스캔 또는 TestCacheInvalidation 단계에서 실패합니다. Cloud Manager이 내부 테스트에 사용하는 호스트 이름과 일치하는 활성화된 vhost가 없거나 일치하는 vhost가 X-Vhost 헤더를 설정하지 않아 요청이 catch-all vhost에 속하는 경우 오류가 발생합니다. default.vhost개의 symlink가 누락되고, ServerAlias 값이 없으며, invalidate.cache을(를) 차단하는 재작성 규칙도 같은 결과를 생성합니다. 하나 이상의 활성화된 vhost 핸들 127.0.0.1, localhost, *.local 및 클라우드 도메인을 확인하고 X-Vhost 헤더를 설정하면 오류가 해결됩니다.

설명 description

문제: 코드 스캔 또는 TestCacheInvalidation에서 Dispatcher 배포가 실패하고 X-Vhost catch-all 오류가 발생합니다

설명

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 symlink가 없거나 필수 ServerAlias 값이 없거나 리디렉션/다시 작성 규칙 블록 invalidate.cache이(가) 있을 때 추가 오류가 발생합니다.

환경:

  • Adobe Experience Manager as a Cloud Service (AEMaaCS)
  • AEM Managed Services
  • Cloud Manager(코드 스캔 및 웹 계층 유효성 검사 파이프라인)
  • Dispatcher

문제/증상:

  • Dispatcher 테스트 실패 메시지: Test fails. Expected header X-Vhost to be existing and not: catch-all, got: catch-all
  • Dispatcher 유효성 검사기가 발견된 문제가 없음​을 인쇄하지만 파이프라인이 코드 검색에 실패합니다.
  • Dispatcher 무효화 테스트에서 invalidate.cache.에 대한 POST Expected 200 but got 403을(를) 반환합니다.
  • Cloud Manager 로그에 오류 코드 BUILD_WEB_TIER_VALIDATE_WITH_DISPATCHER_TEST_FAILURE 또는 BUILD_WEB_TIER_VALIDATE_STATIC_TEST_FAILURE.이(가) 표시됩니다.

근본 원인:

Cloud Manager은 127.0.0.1, localhost, *.local, *.adobeaemcloud.com*.adobeaemcloud.net에서 들어오는 요청과 일치하도록 하나 이상의 활성화된 vhost가 필요한 내부 Dispatcher 테스트를 수행합니다. 이러한 테스트는 X-Vhost 헤더도 반환해야 합니다. 이러한 호스트 이름이 활성화된 vhost와 일치하지 않거나 일치하는 vhost가 X-Vhost를 설정하지 않으면 Cloud Manager에서 응답을 catch-all로 처리하여 TestCacheInvalidation 및 다른 테스트가 실패합니다. default.vhost symlink가 없거나, 사용자 지정 재작성 규칙이 무효화되거나, 복사 단계 중 아티팩트가 누락된 경우에도 동일한 오류가 발생합니다.

확인하는 방법

  1. Cloud Manager > 파이프라인(으)로 이동하고 실패한 파이프라인을 선택한 다음 실행 보기를 선택합니다. build_dispatcher_validation.logdispatcher_backend_mock.log을(를) 다운로드합니다.
  2. 로그에서 TestCacheInvalidation 또는 X-Vhost을(를) 검색합니다. 오류로 인해 Expected header X-Vhost ... got catch-all과(와) 같은 메시지가 표시됩니다.
  3. 오류가 표시되지 않으면 파이프라인에서 이전 빌드를 다시 사용할 수 있습니다. 더미 git 커밋을 수행하여 강제로 다시 빌드하고 다시 확인합니다.

해결 방법 resolution

  1. 필요한 ServerAlias 값이 있는지 확인하십시오. 활성 도메인에 대해 conf.d/available_vhosts/*.vhost을(를) 열고 하나 이상의 활성화된 vhost에 이러한 모든 별칭이 명시적으로 포함되어 있는지 확인합니다.

    code language-none
    ServerAlias "127.0.0.1" "localhost" "*.local" "*.adobeaemcloud.com" "*.adobeaemcloud.net"
    

glob *만 사용할 수 있는 것은 아닙니다. 별칭이 누락된 경우 추가하고 재배포합니다.
​2. vhost가 활성화되었는지 확인합니다. 필요한 ServerAlias 항목이 있는 vhost를 가리키는 symlink가 있는지 conf.d/enabled_vhosts/을(를) 확인하십시오. 예: default.vhost -> ../available_vhosts/default.vhost. symlink가 누락된 경우 추가하고 커밋을 푸시합니다.
​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
"

출력에 문제가 없음구문 확인이 표시되는지 확인합니다. 재배포하기 전에 로컬 구문 오류를 모두 수정하십시오.
​6. 변경 사항을 커밋하고 Dispatcher 파이프라인을 다시 실행합니다. 코드 스캔 및 TestCacheInvalidation 통과 확인.

유효성 검사

  1. 최신 Cloud Manager 파이프라인이 TestCacheInvalidation 오류 없이 코드 검색을 통과하는지 확인하십시오.
  2. 로그를 통해 디스패처 무효화를 확인하면 invalidate.cache에 대한 HTTP 403 응답이 표시되지 않습니다.

관련 읽기

recommendation-more-help
experience-cloud-kcs-help-kbarticles