구성 파일에 대한 설명 | AEM

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

설명 description

환경

Experience Manager

문제/증상

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

명명 규칙

Apache 웹 서버는 include 또는 include 선택적 문으로 타깃팅할 때 파일의 파일 확장명이 무엇이든 실제로 상관하지 않습니다. 갈등과 혼동을 없애는 이름으로 바르게 이름을 붙이는 게 큰 도움이 된다. 사용된 이름은 파일이 적용되는 범위를 설명하므로 작업이 편리해집니다. 모든 항목의 이름이 .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(가상 호스트) 파일은 <개의 VirtualHosts >입니다.  항목이 호스트 이름을 일치시키고 Apache가 서로 다른 규칙으로 각 도메인 트래픽을 처리할 수 있도록 합니다. .vhost 파일에서 rewrites, whitelist 등과 같은 다른 파일을 가져옵니다. 포함됩니다.
< 파일 이름> _rewrite.rules
/etc/httpd/conf.d/rewrites/
*_rewrite.rules개의 파일이 vhost 파일에 명시적으로 포함되고 사용될 mod_rewrite개의 규칙을 저장합니다.
< 파일 이름> _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, 포트 및 시간 제한 설정을 지정합니다. 적절한 렌더러는 Dispatcher에서 요청을 페치/프록시할 수 있는 AEM 시스템 또는 livecycle server일 수 있습니다.

피한 문제

명명 규칙을 따를 때, 치명적인 결과를 초래할 수 있는 꽤 쉬운 실수를 하지 않도록 하십시오. 몇 가지 예를 들어 보겠습니다.

문제 예

예를 들어 사이트의 경우 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 바이너리는 conf.d/*.confconf.modules.d/*.conf 디렉터리에 대해 includeoptional을(를) 수행하는 httpd.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)에 삭제하고 이 파일 내에서 모듈 작업에 필요한 기본 매개 변수 사용 설정을 확인합니다.

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

위에서 볼 수 있듯이 여기에는 Dispatcher 모듈이 /etc/httpd/conf.dispatcher.d/dispatcher.any에서 구성 파일을 선택하는 데 사용할 수 있는 최상위 수준의 dispatcher.any 파일이 포함됩니다.

이 파일의 내용에 주의하십시오.

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

최상위 dispatcher.any 파일에는 파일 이름이 <FILENAME>_farm.any/etc/httpd/conf.dispatcher.d/enabled_farms/에 있는 활성화된 모든 팜 파일이 포함되어 있으며 표준 명명 규칙을 따릅니다.

앞에서 언급한 dispatcher_vhost.conf 파일의 뒷부분에서는 표준 명명 규칙을 따르는 파일 이름이 <FILENAME>.vhost/etc/httpd/conf.d/enabled_vhosts/에 있는 활성화된 각 가상 호스트 파일을 활성화하는 include 문도 수행합니다.

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 가상 호스트 포함

/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 화이트리스트 파일 중 하나의 내용을 살펴보겠습니다.

<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 팜 포함

/etc/httpd/conf.dispatcher.d/available_farms/ 디렉터리의 <FILENAME>_farm.any 파일이 /etc/httpd/conf.dispatcher.d/enabled_farms/ 디렉터리에 심볼릭 링크되면 실행 중인 구성에서 사용됩니다.

팜 파일에는 캐시, clientheaders, filters, 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