변수 사용 및 이해

Apache 웹 서버 및 Dispatcher 모듈 구성 파일에서 변수의 기능을 활용하는 방법을 알아봅니다.

설명 description

환경

AEM(Adobe Experience Manager)

문제

이 문서에서는 Apache 웹 서버 및 Dispatcher 모듈 구성 파일에서 변수의 기능을 활용할 수 있는 방법을 설명합니다.

변수

Apache는 Dispatcher 모듈의 변수 및 버전 4.1.9 이상을 지원합니다. 이를 활용하여 다음을 수행할 수 있습니다.

  • 환경별 항목이 구성에 인라인이 아닌 추출되어 개발의 구성 파일이 동일한 기능 출력으로 프로덕션에서 작동하는지 확인하십시오.
  • AMS가 제공하는 변경 불가능한 파일의 기능을 전환하고 로그 수준을 변경해도 변경되지 않습니다.
  • RUNMODEENV_TYPE과(와) 같은 변수를 기반으로 사용할 포함 항목을 변경합니다.
  • Apache 구성과 모듈 구성 간에 DocumentRoot와 VirtualHost DNS 이름을 일치시키십시오.

해결 방법 resolution

  1. 기준 변수 사용
    AMS 기준 파일은 읽기 전용이며 변경할 수 없기 때문에 설정/해제하거나 사용하는 변수를 편집하여 구성할 수 있는 기능이 있습니다.

    기준선 변수

    다음은 /etc/httpd/conf.d/variables/ams_default.vars 파일의 내용 샘플입니다

    code language-none
    Define DISP_LOG_LEVEL info
    
    Define AUTHOR_WHITELIST_ENABLED 0
    
    Define PUBLISH_WHITELIST_ENABLED 0
    
    Define AUTHOR_FORCE_SSL 1
    
    Define PUBLISH_FORCE_SSL 0
    

    예 1 - SSL 강제 적용

    AUTHOR_FORCE_SSL 또는 PUBLISH_FORCE_SSL 위에 표시된 변수는 http 요청에 들어올 때 최종 사용자가 https로 리디렉션되도록 하는 재작성 규칙을 참여하도록 1로 설정할 수 있습니다.

    다음은 이 토글을 사용할 수 있는 구성 파일 구문입니다.

    code language-none
    <VirtualHost *:80>
    
      <IfModule mod_rewrite.c>
    
        ReWriteEngine    on
    
        <If "${PUBLISH_FORCE_SSL} == 1">
    
          Include /etc/httpd/conf.d/rewrites/forcessl_rewrite.rules
    
        </If>
    
      </IfModule>
    
    </VirtualHost>
    

    다음과 같은 재작성 규칙에 포함된 는 최종 사용자 브라우저를 리디렉션하는 코드가 있지만 1로 설정되는 변수는 파일 사용 여부를 나타냅니다.

    예 2 - 로깅 수준

    변수 DISP_LOG_LEVEL을(를) 사용하여 실행 중인 구성에서 실제로 사용되는 로그 수준에 사용할 항목을 설정할 수 있습니다.

    다음은 ams 기본 구성 파일에 있는 구문 예입니다.

    code language-none
    <IfModule disp_apache2.c>
    
      DispatcherLog    logs/dispatcher.log
    
      DispatcherLogLevel ${DISP_LOG_LEVEL}
    
    </IfModule>
    

    Dispatcher 로깅 수준을 높여야 하는 경우 ams_default.vars 변수 DISP_LOG_LEVEL을(를) 원하는 수준으로 업데이트하십시오.

    예제 값은 정수 또는 단어일 수 있습니다.

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
    로그 수준 정수 값 단어 값
    추적 4 추적
    디버그 3 디버그
    정보 2 정보
    경고 1 경고
    오류 0 오류

    예제 3 - 허용 목록

    IP 주소를 기반으로 최종 사용자 트래픽을 허용하거나 허용하지 않는 규칙을 포함하는 재작성 규칙에 참여하도록 변수 AUTHOR_WHITELIST_ENABLEDPUBLISH_WHITELIST_ENABLED을(를) 1(으)로 설정할 수 있습니다. 이 기능 ON ​을(를) 전환하려면 화이트리스트 규칙 파일 만들기와 함께 이 기능을 포함해야 합니다.

    다음은 변수가 화이트리스트 파일 및 화이트리스트 파일의 포함을 활성화하는 방법에 대한 몇 가지 구문 예입니다.

    sample.vhost:

    code language-none
    <VirtualHost *:80>
    
      <Directory />
    
        <If "${AUTHOR_WHITELIST_ENABLED} == 1">
    
            Include /etc/httpd/conf.d/whitelists/*_whitelist.rules
    
        </If>
    
      </Directory>
    
    </VirtualHost>
    

    sample_whitelist.rules:

    code language-none
    <RequireAny>
    
      Require ip 10.43.0.10/24
    
    </RequireAny>
    

    볼 수 있듯이 sample_whitelist.rules은(는) IP 제한을 적용하지만 변수를 토글하면 sample.vhost에 포함할 수 있습니다.

  2. 변수를 배치할 위치
    웹 서버 시작 인수

    AMS는 /etc/sysconfig/httpd 파일 내에 있는 apache 프로세스의 시작 인수에 전역 변수를 넣습니다.

    이 파일에는 다음과 같이 미리 정의된 변수가 있습니다.

    code language-none
    AUTHOR_IP="10.43.0.59"
    AUTHOR_PORT="4502"
    AUTHOR_DOCROOT='/mnt/var/www/author'
    PUBLISH_IP="10.43.0.20"
    PUBLISH_PORT="4503"
    PUBLISH_DOCROOT='/mnt/var/www/html'
    ENV_TYPE='dev'
    RUNMODE='dev'
    

    이는 변경할 수 있는 사항이 아니지만 구성 파일에서 활용하는 것이 좋습니다.

    참고 - 서비스를 시작할 때만 이 파일이 포함되기 때문입니다. 변경 사항을 적용하려면 서비스를 다시 시작해야 합니다. 다시 로드하는 것만으로는 충분하지 않지만 대신 다시 시작해야 합니다.

    변수 파일(.vars)

    코드에서 제공한 사용자 지정 변수는 /etc/httpd/conf.d/variables/ 디렉터리 내의 .vars 파일에 있어야 합니다.

    이러한 파일에는 원하는 사용자 지정 변수가 있을 수 있습니다. 다음은 다음 샘플 파일에 대한 몇 가지 구문 예입니다.

    고유한 변수를 만들 때 파일의 이름을 해당 내용에 따라 지정하고 수동 여기에 제공된 이름 지정 표준을 따르도록 지정합니다. 위의 예에서 변수 파일이 구성 파일에 사용할 변수로 다른 DNS 항목을 호스팅함을 볼 수 있습니다.

    /etc/httpd/conf.d/variables/sample-domain_domains_dev.vars:

    code language-none
    Define SAMPLE_DOMAIN dev.sample-domain.com
        Define SAMPLE_ALT_DOMAIN dev.sample-domain.net
    

    /etc/httpd/conf.d/variables/sample-domain_domains_stage.vars:

    code language-none
    Define SAMPLE_DOMAIN stage.sample-domain.com
        Define SAMPLE_ALT_DOMAIN stage.sample-domain.net
    

    /etc/httpd/conf.d/variables/sample-domain_domains_prod.vars:

    code language-none
    Define SAMPLE_DOMAIN www.sample-domain.com
        Define SAMPLE_ALT_DOMAIN www.sample-domain.net
    
  3. 변수 사용
    변수 파일 내에 변수를 정의했으므로 다른 구성 파일 내에서 변수를 올바르게 사용하는 방법에 대해 알아보겠습니다.

    위의 .vars 파일 예제를 사용하여 적절한 사용 사례를 보여 드리겠습니다.

    모든 환경 기반 변수를 전체적으로 포함하려고 /etc/httpd/conf.d/000_load_env_vars.conf 파일을 만듭니다.

    code language-none
    Include /etc/httpd/conf.d/variables/*_${ENV_TYPE}.vars
    Include /etc/httpd/conf.d/variables/*_${RUNMODE}.vars
    

    httpd 서비스가 시작되면 AMS가 /etc/sysconfig/httpd에서 설정한 변수를 가져오고 변수가 ENV_TYPERUNMODE(으)로 설정되어 있는 것으로 알고 있습니다.

    conf.d의 포함 파일 순서는 파일 이름에 000을 의미하는 영숫자 로드 순서이므로 이 전역 .conf 파일을 가져올 때 일찍 가져옵니다. 이 순서는 디렉터리에 있는 다른 파일보다 먼저 로드됩니다.

    include 문도 파일 이름에 변수를 사용합니다. 이렇게 하면 ENV_TYPERUNMODE 변수에 있는 값에 따라 실제로 로드할 파일을 변경할 수 있습니다.

    ENV_TYPE 값이 dev 이면 사용되는 파일은 다음과 같습니다.

    /etc/httpd/conf.d/variables/sample-domain_domains_dev.vars

    ENV_TYPE 값이 단계 인 경우 사용되는 파일은 다음과 같습니다.

    /etc/httpd/conf.d/variables/sample-domain_domains_stage.vars

    RUNMODE 값이 미리 보기 인 경우 사용되는 파일은 다음과 같습니다.

    /etc/httpd/conf.d/variables/sample-domain_domains_preview.vars

    해당 파일이 포함되면 내부에 저장된 변수 이름을 사용할 수 있습니다.

    /etc/httpd/conf.d/available_vhosts/sample-domain.vhost 파일에서 개발용으로만 작동한 일반 구문을 교환할 수 있습니다.

    code language-none
    <VirtualHost *:80>
    
      ServerName    dev.sample-domain.com
    
      ServerAlias    dev.sample-domain.net
    

    dev, stage 및 prod에 작동하는 변수의 기능을 사용하는 최신 구문의 경우,

    code language-none
    <VirtualHost *:80>
    
      ServerName    ${SAMPLE_DOMAIN}
    
      ServerAlias    ${SAMPLE_ALT_DOMAIN}
    

    /etc/httpd/conf.dispatcher.d/vhosts/sample-domain_vhosts.any 파일에서 개발용으로만 작동한 일반 구문을 교환할 수 있습니다.

    code language-none
    "dev.sample-domain.com"
    "dev.sample-domain.net"
    

    dev, stage 및 prod에 작동하는 변수의 기능을 사용하는 최신 구문의 경우,

    code language-none
    "${SAMPLE_DOMAIN}"
    "${SAMPLE_ALT_DOMAIN}"
    

    이러한 변수는 환경당 배포된 파일이 다를 필요 없이 실행 중인 설정을 개별화하는 데 재사용률이 매우 큽니다. 기본적으로 변수를 사용하여 구성 파일을 템플릿화하고 변수를 기반으로 파일을 포함할 수 있습니다.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f