환경 변수가 있는 Apache 사용자 정의 헤더

환경 변수가 있는 Apache 사용자 정의 헤더

Apache 서버 2.4.6 및 headers_module을 사용하여 환경 변수**를 사용하여 사용자 정의 HTTP 헤더를 설정하려고 합니다.

포트 80의 HTTP VHost 내부에서 작업합니다.

다음과 같은 기본 예를 통해 모든 것이 예상대로 작동합니다.

Header set MyHeader "%D %t"

나는 mod_headers의 Apache 문서를 읽었습니다.https://httpd.apache.org/docs/2.4/en/mod/mod_headers.html#header

다음을 사용하여 환경 변수에 액세스할 수 있다고 합니다. %{ENVVARNAME}e

(ENVVARNAME은 ENV 변수의 이름입니다)

다른 게시물도 읽었지만 실제 답변은 없습니다. Apache는 환경 변수를 사용하여 사용자 정의 헤더를 설정합니다.

하지만 내 문제는 HOSTNAME 환경 값과 같은 Apache 서버를 식별하는 것보다 헤더를 추가하는 것입니다.

  1. 나는 이것을 시도했다

Header Set X-Serv %{HOSTNAME}e

성공하지 못했습니다. 항상 값 대신 X-Serv:{null}을 표시합니다.

  1. 나는 또한 다음을 시도했습니다.

SetEnv myvar ${HOSTNAME} Header set X-Serv %{myvar}e

성공하지 못했습니다. 내 HTTP 헤더에 표시됩니다. X-Serv: %{myvar}e

나는 또한 다른 다양한 조합을 시도했습니다.

참고: 내 HOSTNAME 환경 변수가 존재하며 httpd 프로세스를 소유한 Apache 사용자와 함께 'env' 명령에 표시됩니다.

어떤 아이디어?

답변1

어떤 시스템 환경 변수를 사용할 것인지 선언해야 합니다.PassEnv지령

실제 예는 다음과 같습니다.

PassEnv HOSTNAME
Header Set X-Serv %{HOSTNAME}e

답변2

작동시키는 방법을 찾았습니다.

  • 모듈이 활성화되었는지(mod_headers) 확인하거나 필요한 경우 활성화하세요.

    a2enmod headers
    
  • /etc/apache2/envvars에서 추가

    export HOSTNAME=`uname -n`
    
  • <VirtualHost>조항 에

    Header set apachehost ${HOSTNAME}
    
  • httpd 서비스 다시 시작 또는 다시 로드

    service apache2 restart
    

답변3

1. 모듈이 활성화되었는지(mod_headers) 확인하거나 필요한 경우 활성화합니다.

a2enmod headers

2./etc/apache2/envvars에서 추가

export HOSTNAME1=`uname -n`또는`hostname`

3.in <VirtualHost _default:443>

PassEnv HOSTNAME1

Header set X-Server "%{HOSTNAME1}e"

4.httpd 서비스를 다시 시작하거나 다시 로드합니다.

service apache2 restart

관련 정보