Apache에서 환경 변수를 설정하는 방법

(*-*)浩
풀어 주다: 2019-11-29 14:45:28
원래의
4771명이 탐색했습니다.

Apache HTTP Server에 영향을 미치는 두 가지 환경 변수가 있습니다.

Apache에서 환경 변수를 설정하는 방법

첫째, 기본 운영 체제에 의해 제어되는 환경 변수가 있습니다. 이는 서버가 시작되기 전에 설정됩니다. 구성 파일의 확장에 사용하거나 PassEnv 지시어를 사용하여 CGI 스크립트 및 SSI에 전달할 수 있습니다. (추천 학습: Apache Server)

둘째, Apache HTTP Server는 환경 변수라고도 불리는 명명된 변수에 정보를 저장하는 메커니즘을 제공합니다. 이 정보는 로깅이나 액세스 제어 등 다양한 작업을 제어하는 ​​데 사용될 수 있습니다. 변수는 CGI 스크립트와 같은 외부 프로그램과 통신하는 메커니즘으로도 사용됩니다. 이 문서에서는 이러한 변수를 조작하고 사용하는 다양한 방법에 대해 설명합니다.

이러한 변수를 환경 변수라고 부르기는 하지만 기본 운영 체제에서 제어하는 ​​환경 변수와는 다릅니다. 대신 이러한 변수는 내부 Apache 구조에 저장되고 조작됩니다.

CGI 스크립트 및 서버측 포함 스크립트에 제공되는 경우에만 실제 운영 체제 환경 변수가 됩니다. 서버 자체가 실행되는 운영 체제 환경을 조작하려면 운영 체제 셸에서 제공하는 표준 환경 조작 메커니즘을 사용해야 합니다.

환경 변수 설정

기본 환경 작업

Apache에서 환경 변수를 설정하는 가장 기본적인 방법은 무조건 SetEnv 지시문을 사용하는 것입니다. PassEnv 지시어를 사용하여 서버를 시작한 셸 환경에서 변수를 전달할 수도 있습니다.

조건부 요청별 설정

유연성을 높이기 위해 mod_setenvif는 특정 요청의 특성에 따라 요청별로 환경 변수를 설정할 수 있는 지시어를 제공합니다.

예를 들어 특정 브라우저(사용자 에이전트)에서 요청이 발생하거나 특정 Referer [sic] 헤더가 발견된 경우에만 변수를 설정할 수 있습니다. 환경 변수를 설정하기 위해 [E = ...] 옵션을 사용하는 mod_rewrite의 RewriteRule을 통해 더 큰 유연성을 얻을 수 있습니다.

고유 식별자 마지막으로 mod_unique_id는 요청별 환경 변수 UNIQUE_ID를 매우 특정한 조건에서 "모든" 요청에 걸쳐 고유함을 보장하는 값으로 설정합니다.

표준 CGI 변수

Apache 구성에 설정되고 셸에서 전달된 모든 환경 변수 외에도 CGI 스크립트 및 SSI 페이지는 CGI 사양 정보에 필요한 요청에 대한 메타데이터가 포함된 환경 변수 세트를 제공합니다.

일부 경고

표준 CGI 변수는 환경 조작 지침을 사용하여 재정의하거나 변경할 수 없습니다.

suexec를 사용하여 CGI 스크립트를 시작하면 CGI 스크립트를 시작하기 전에 환경이 안전한 변수 세트로 지워집니다. 안전한 변수 목록은 컴파일 타임에 suexec.c에 정의됩니다.

이식성을 위해 환경 변수 이름에는 문자, 숫자, 밑줄만 사용할 수 있습니다. 또한 첫 번째 문자는 숫자가 아닐 수도 있습니다. 이 제한과 일치하지 않는 문자는 CGI 스크립트 및 SSI 페이지로 전달될 때 밑줄로 대체됩니다.

한 가지 특별한 경우는 환경 변수를 통해 CGI 스크립트 등에 전달되는 HTTP 헤더입니다(아래 참조). 대문자로 변환되고 대시만 밑줄로 대체됩니다. 헤더에 다른(잘못된) 문자가 포함되어 있으면 전체 헤더가 자동으로 제거됩니다.

SetEnv 지시문은 요청 처리 중에 늦게 실행됩니다. 즉, SetEnvIf 및 RewriteCond와 같은 지시문은 설정된 변수를 볼 수 없습니다.

서버가 내부 하위 요청을 통해 경로를 조회할 때(예: DirectoryIndex 조회 또는 mod_autoindex를 사용하여 디렉터리 목록 생성) 요청별 환경 변수는 하위 요청에서 상속되지 않습니다. 또한 mod_setenvif가 작업을 수행하는 API 단계로 인해 SetEnvIf 지시문은 하위 요청에서 별도로 평가되지 않습니다.

위 내용은 Apache에서 환경 변수를 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿