변수 사용 및 이해

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

🏠목차

🔙이전 캐시 이해

변수

Apache는 변수를 지원하며, 디스패처 모듈 버전 4.1.9 이후에는 디스패처도 변수를 지원합니다.

변수를 사용하여 다음과 같은 유용한 작업을 매우 다양하게 할 수 있습니다.

  • 환경 관련 항목이 인라인이 아니고 개발 작업의 구성 파일이 동일한 기능 출력을 사용하여 프로덕션 상태에 있도록 추출되었는지 확인하십시오.
  • 기능을 전환하고 AMS가 제공하고 사용자가 변경할 수 없는 변경되지 않는 파일의 로그 수준을 변경할 수 있습니다.
  • RUNMODE 및 ENV_TYPE과 같은 변수를 기반으로 사용하는 include 항목을 변경할 수 있습니다.
  • Apache 구성과 모듈 구성 간에 DocumentRoot 및 VirtualHost DNS 이름을 일치시킬 수 있습니다.

기준 변수 이해

AMS 기준 파일이 읽기 전용이고 변경할 수 없다는 사실 때문에 사용자가 사용하는 변수를 편집하여 설정을 켜거나 끄고 구성할 수도 있는 기능이 있습니다.

기준 변수

다음은 /etc/httpd/conf.d/variables/ams_default.vars 파일의 컨텐츠 샘플입니다.

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 위에 표시된 변수를 1로 설정하여 https로 리디렉션될 http 요청 시 들어올 때 최종 사용자를 강제하는 rewrite 규칙을 사용하도록 할 수 있습니다.

다음은 이 전환이 작동할 수 있도록 허용하는 구성 파일 구문입니다.

</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>

rewrite 규칙에서 볼 수 있듯이 include는 최종 사용자 브라우저를 리디렉션하는 코드를 포함하지만, 1로 설정되는 변수는 파일의 사용을 허용하거나 허용하지 않을 수 있습니다.

예 2 - 로깅 수준

DISP_LOG_LEVEL 변수는 실행 중인 구성에서 실제로 사용되는 로그 수준에 대해 원하는 내용을 설정하는 데 사용할 수 있습니다.

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

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

디스패처 로깅 수준을 높여야 하는 경우 ams_default.vars 변수 DISP_LOG_LEVEL을 원하는 수준으로 업데이트하십시오.

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

로그 수준

정수 값

단어 값

추적

4

trace

디버그

3

debug

정보

2

info

경고

1

warn

오류

0

error

예 3 - 허용 목록

AUTHOR_WHITELIST_ENABLEDPUBLISH_WHITELIST_ENABLED 변수를 1로 설정하여 IP 주소를 기반으로 최종 사용자 트래픽을 허용하거나 허용하지 않는 규칙을 포함하는 rewrite 규칙을 사용하도록 할 수 있습니다.  이 기능을 토글하려면 포함할 때처럼 whitelist 규칙 파일 작성과 함께 결합해야 합니다.

다음은 변수가 whitelist 파일의 include와 whitelist 파일 예를 사용할 수 있도록 하는 방법에 대한 몇 가지 구문 예입니다.

sample.vhost:

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

sample_whitelist.rules:

<RequireAny> Require ip 10.43.0.10/24 </RequireAny>

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

변수를 넣을 위치

웹 서버 시작 인수

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

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

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 파일에 있어야 합니다.

이러한 파일은 원하는 사용자 정의 변수를 가질 수 있으며 다음 샘플 파일에서 일부 구문 예를 볼 수 있습니다.

/etc/httpd/conf.d/variables/weretail_domains_dev.vars:

Define WERETAIL_DOMAIN dev.weretail.com Define WERETAIL_ALT_DOMAIN dev.weretail.net

/etc/httpd/conf.d/variables/weretail_domains_stage.vars:

Define WERETAIL_DOMAIN stage.weretail.com Define WERETAIL_ALT_DOMAIN stage.weretail.net

/etc/httpd/conf.d/variables/weretail_domains_prod.vars:

Define WERETAIL_DOMAIN www.weretail.com Define WERETAIL_ALT_DOMAIN www..weretail.net

자신만의 변수 파일을 작성할 때에는 컨텐츠와 여기 설명서에 제공된 명명 표준에 따라 파일 이름을 지정하십시오.  위의 예에서는 변수 파일이 구성 파일에서 사용할 변수로 다양한 DNS 항목을 호스트하는 것을 볼 수 있습니다.

변수 사용

이제 변수 파일 내에 변수를 정의했으므로, 다른 구성 파일 내에서 적절하게 사용하는 방법을 알고 싶습니다.

위의 .vars 파일 예를 사용하여 적절한 사용 사례를 설명하겠습니다.

모든 환경 기반 변수를 전역에 포함하여 /etc/httpd/conf.d/000_load_env_vars.conf 파일을 만들겠습니다.

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

아시다시피 httpd 서비스가 시작될 때 http 이 서비스가 /etc/sysconfig/httpd에서 AMS가 설정한 변수를 가져오고 ENV_TYPERUNMODE의 변수 세트를 포함합니다.

이 전역 .conf 파일을 가져오는 경우 conf.d에서 파일의 포함 순서가 영숫자 로드 순서이고 이것은 파일 이름에 있는 000이 디렉토리에 있는 다른 파일 앞에 로드되도록 함을 의미하므로 이 파일을 일찍 가져오게 됩니다.

include 구문은 파일 이름의 변수도 사용하고 있습니다.  따라서 ENV_TYPE 및 RUNMODE 변수에 있는 값에 따라 실제로 로드할 파일을 변경할 수 있습니다.

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

/etc/httpd/conf.d/variables/weretail_domains_dev.vars

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

/etc/httpd/conf.d/variables/weretail_domains_stage.vars

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

/etc/httpd/conf.d/variables/weretail_domains_preview.vars

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

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

<VirtualHost *:80> ServerName dev.weretail.com ServerAlias dev.weretail.net

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

<VirtualHost *:80> ServerName ${WERETAIL_DOMAIN} ServerAlias ${WERETAIL_ALT_DOMAIN}

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

"dev.weretail.com" "dev.weretail.net"

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

"${WERETAIL_DOMAIN}" "${WERETAIL_ALT_DOMAIN}"

이 변수는 각 환경마다 다양한 파일을 배포하지 않아도 실행 설정을 개인별로 맞춤 지정하는 데 매우 많이 재사용됩니다.  기본적으로 변수와 변수에 기반한 include 파일을 사용하여 구성 파일을 템플릿으로 만들 수 있습니다.

다음 ➡ 플러시

Adobe 로고

내 계정 로그인