구성 파일에 대한 설명 | AEM
Managed Services의 Dispatcher 서버 Adobe에서 구성 파일에 대한 심층적인 분류를 살펴봅니다. 중요도, 이름 지정 규칙 및 실제 적용 방법을 알아봅니다.
설명 description
환경
Experience Manager
문제/증상
이 문서에서는 Adobe Managed Services에서 프로비저닝된 표준 내장 Dispatcher 서버에 배포된 각 구성 파일을 분석하고 설명합니다. 사용, 명명 규칙 등
명명 규칙
Apache 웹 서버는 include 또는 include 선택적 문으로 타깃팅할 때 파일의 파일 확장명이 무엇이든 실제로 상관하지 않습니다. 갈등과 혼동을 없애는 이름으로 바르게 이름을 붙이는 게 큰 도움이 된다. 사용된 이름은 파일이 적용되는 범위를 설명하므로 작업이 편리해집니다. 모든 항목의 이름이 .conf 인 경우 이 이름은 매우 혼란스럽습니다. 이름이 잘못된 파일 및 확장명은 사용하지 마십시오.
다음은 일반적인 AMS 구성 Dispatcher에서 사용되는 다양한 사용자 지정 파일 확장자 및 이름 지정 규칙 목록입니다.
conf.d/ 에 포함된 파일
<
파일 이름>
.conf<
파일 이름>
.vhost준비: /etc/httpd/conf.d/available_vhosts/
활성:
/etc/httpd/conf.d/enabled_vhosts/
*참고: .vhost 파일은 enabled_vhosts 폴더에 복사되지 않지만 available_vhosts/ .vhost 파일의 상대 경로에 대한 심볼릭 링크를 사용합니다
<
개의 VirtualHosts >
입니다. 항목이 호스트 이름을 일치시키고 Apache가 서로 다른 규칙으로 각 도메인 트래픽을 처리할 수 있도록 합니다. .vhost 파일에서 rewrites, whitelist 등과 같은 다른 파일을 가져옵니다. 포함됩니다.<
파일 이름>
_rewrite.rules*_rewrite.rules
개의 파일이 vhost 파일에 명시적으로 포함되고 사용될 mod_rewrite
개의 규칙을 저장합니다.<
파일 이름>
_whitelist.rulesconf.modules.d/ 에 포함된 파일
<
파일 이름>
.any<
파일 이름>
_farm.any스테이징됨
:
/etc/httpd/conf.dispatcher.d/available_farms/
활성
:
/etc/httpd/conf.dispatcher.d/enabled_farms/
*참고: 이러한 팜 파일은 enabled_farms 폴더에 복사되지 않지만 available_farms/_farm.any 파일의 상대 경로에 심볼릭 링크를 사용합니다
dispatcher.any 파일에서 이름별로 자동 포함됩니다.
기본 팜 파일은 000(으)로 시작하여 먼저 로드되었는지 확인합니다.
사용자 지정 팜 파일은 올바른 포함 동작을 위해 번호 체계를 100_로 시작하여 로드해야 합니다.
<
파일 이름>
_filters.any<
파일 이름>
_vhosts.any<
파일 이름>
_cache.any<
파일 이름>
_invalidate_allowed.any<
파일 이름>
_clientheaders.any<
파일 이름>
_renders.any피한 문제
명명 규칙을 따를 때, 치명적인 결과를 초래할 수 있는 꽤 쉬운 실수를 하지 않도록 하십시오. 몇 가지 예를 들어 보겠습니다.
문제 예
예를 들어 사이트의 경우 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/*.conf
및 conf.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" }