구성 파일에 대한 설명 | AEM

Managed Services의 Dispatcher 서버 Adobe에서 구성 파일에 대한 심층적인 분류를 살펴봅니다. 중요도, 이름 지정 규칙 및 실제 적용 방법을 알아봅니다.

설명 description

환경

Experience Manager

문제/증상

이 문서에서는 Adobe Managed Services에서 프로비저닝된 표준 기본 제공 Dispatcher 서버에 배포된 각 구성 파일을 분석하고 설명합니다. 사용, 명명 규칙 등

명명 규칙

Apache 웹 서버는 include 또는 includeoptional 문으로 타깃팅할 때 실제로 파일의 파일 확장명이 무엇이든 상관하지 않습니다. 갈등과 혼동을 없애는 이름으로 바르게 이름을 붙이는 게 큰 도움이 된다. 사용된 이름은 파일이 적용되는 범위를 설명하므로 작업이 편리해집니다. 모든 항목의 이름이 .conf 인 경우 이 이름은 매우 혼란스럽습니다. 이름이 잘못된 파일과 확장명은 피하고 싶습니다.

다음은 일반적인 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 파일의 상대 경로에 대한 심볼릭 링크를 사용합니다.

*.vhost (가상 호스트) 파일은 < 가상 호스트 >  항목이 호스트 이름을 일치시키고 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 주소를 기반으로 가상 호스트 보기를 제한하려는 경우 이러한 파일 중 하나를 생성하여 *.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/

*참고: 이러한 팜 파일은 enabled_farms 폴더에 복사되지 않지만 available_farms/_farm.any 파일의 상대 경로에 대한 심볼릭 링크를 사용합니다.

*farm.any 파일은 conf.dispatcher.d/dispatcher.any 파일 내에 포함됩니다. 이러한 상위 팜 파일은 각 렌더링 또는 웹 사이트 유형에 대한 모듈 동작을 제어하기 위해 존재합니다. 파일은 available_farms 디렉터리에 만들어지고 enabled_farms 디렉터리에 symlink를 사용하여 활성화됩니다.

Dispatcher.any 파일에서 이름별로 이러한 매개 변수가 자동으로 포함됩니다.

기준 팜 파일은 000으로 시작합니다.
먼저 로드되었는지 확인하십시오.

사용자 지정 팜 파일은 올바른 포함 동작을 위해 번호 체계를 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 server 또는 Dispatcher가 요청을 페치/프록시할 수 있는 AEM 시스템일 수 있습니다.

회피된 문제

명명 규칙을 따를 때 치명적인 결과를 초래할 수 있는 실수를 꽤 쉽게 하지 않을 수 있습니다. 몇 가지 예를 들어 보겠습니다.

문제 예

ExampleCo의 사이트 예제로 Dispatcher 구성의 개발자에 의해 두 개의 구성 파일이 생성되었습니다.

/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에서 오류가 발생하고 문제가 즉시 확인되지 않습니다.

일반적으로 이것이 어떻게 문제가 됩니까?

두 파일이 동일한 위치에 다운로드되면 덮어쓰거나 구분할 수 없게 만들어 배포 프로세스를 악몽으로 만들 수 있습니다.

B. 파일 확장명이 동일하고 자동 포함이 쉽습니다

파일 확장자는 동일하며 Apache가 대부분의 기본 폴더에 모든 .conf 파일을 자동으로 포함하는 자동 포함 확장자를 사용합니다.

일반적으로 이것이 어떻게 문제가 됩니까?

확장자가 .conf인 vhost 파일을 /etc/httpd/conf.d/ 폴더에 넣으면 Apache의 메모리에 로드됩니다. 일반적으로 이 작업은 괜찮지만 확장자가 .conf인 rewrite 규칙 파일이 /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 웹 서버에서 기능 및 구성을 확장할 때 몇 가지 중요한 사항이 있습니다 주문 포함 넌 이해하길 원할 거야.

A. Apache 기준선에는 다음이 포함됩니다.

apache 기준선에 순서가 포함됩니다. apache 바이너리는 conf.d/에 includeoptional 을 수행하는 httpd.conf로 시작합니다.*.conf 및 conf.modules.d/*.conf 디렉터리

위의 다이어그램에서 볼 수 있듯이 httpd 바이너리는 httpd.conf 파일만 구성 파일로 봅니다. 이 파일에는 다음 명령문이 포함되어 있습니다.

Include conf.modules.d/*.conf

IncludeOptional conf.d/*.conf

B. AMS 최상위 레벨 포함

표준을 적용할 때 몇 가지 파일 형식을 추가하고 을(를) 포함했습니다.

다음은 AMS 기본 디렉터리이며 최상위 수준에는 다음이 포함됩니다

AMS 기준선에는 /etc/httpd/conf.d/enabled_vhosts/ 디렉토리의 *.vhost가 있는 파일을 포함하는 dispatcher_vhost.conf로 시작하는 항목이 포함되어 있습니다. /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> 구성 파일을에 드롭합니다 /etc/httpd/conf.d/ 명명된 dispatcher_vhost.conf 그리고 이 파일 안에서는 모듈이 작동하는 데 필요한 기본 매개 변수 사용 설정 이 표시됩니다.

<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 앞에서 언급한 파일에서도 include 문을 사용하여 활성화된 각 가상 호스트 파일이 활성 상태가 되도록 합니다. /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>

최상위 수준에 해결 이 포함된 후에는 언급할 가치가 있는 다른 하위 포함이 있습니다. 다음은 farms 및 vhosts 파일에 다른 하위 요소를 포함하는 방법에 대한 높은 수준의 다이어그램입니다

C. AMS 가상 호스트에 다음이 포함됨

ams 가상 호스트에는 하위 항목이 포함됩니다. 이 그림에서는 하나의 .vhost 파일에 변수, 허용 목록의 파일이 포함되어 있고 폴더를 다시 쓰는 방법을 보여 줍니다

.vhost 파일이 있는 경우 /etc/httpd/conf.d/availabled_vhosts/ 디렉터리가 /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:

<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>_farms.any에 하위 .any 파일이 포함되어 팜 구성을 완료합니다. 이 그림에서는 팜에 각 최상위 섹션 파일 캐시, clientheaders, filters, renders 및 vhosts .any 파일이 포함되어 있음을 알 수 있습니다.

있는 경우 <FILENAME>_farm.any 파일 출처: /etc/httpd/conf.dispatcher.d/available_farms/ 디렉터리가 /etc/httpd/conf.dispatcher.d/enabled_farms/ 디렉터리는 실행 중인 구성에서 사용됩니다.

팜 파일에는 다음을 기반으로 하는 하위 포함이 있습니다. 팜의 최상위 섹션 캐시, clientheaders, filter, renders 및 vhosts와 같은 기능이 있습니다.

다음 <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....

    }

}

include 문을 사용하는 대신 모든 구문이 필요한 대신 weretail 팜에 대한 각 섹션을 볼 수 있습니다.

이러한 포함 중 몇 개의 구문을 살펴보고 각 하위 포함이 어떻게 표시되는지 파악합니다 /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