<?xml version="1.0" encoding="EUC-KR"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko"><head><!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>아파치의 환경변수 - Apache HTTP Server</title>
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<link href="./images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/">모듈</a> | <a href="./mod/directives.html">지시어들</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">용어</a> | <a href="./sitemap.html">사이트맵</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.2</a></div><div id="page-content"><div id="preamble"><h1>아파치의 환경변수</h1>
<div class="toplang">
<p><span>가능한 언어: </span><a href="./en/env.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./ja/env.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/env.html" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/env.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div>
<div class="outofdate">이 문서는 최신판 번역이 아닙니다.
            최근에 변경된 내용은 영어 문서를 참고하세요.</div>

    <p>아파치 웹서버는 <em>환경변수(environment variable)</em>라는
    변수에 정보를 저장할 수 있다. 이 정보를 사용하여 로그나
    접근제어 등 여러 작업을 조절한다. 또, 환경변수는 CGI 스크립트와
    같은 외부 프로그램과 통신하는 수단이 된다. 이 문서는 환경변수를
    다루고 사용하는 다양한 방법들을 설명한다.</p>

    <p>이 변수들을 <em>환경변수</em>라고 부르지만, 운영체제에서
    말하는 환경변수와 다르다. 이 변수는 아파치 내부에 저장되고
    사용된다. 환경변수는 CGI 스크립트나 Server Side Include
    스크립트로 넘겨질때만 실제 운영체제 환경변수가 된다. 서버를
    실행하는 운영체제 환경을 수정하고 싶다면 운영체제 쉘에서
    환경을 수정해야 한다.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#setting">환경변수 설정하기</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#using">환경변수 사용하기</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#special">특별한 목적의 환경변수</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#examples">예제</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="setting" id="setting">환경변수 설정하기</a></h2>
    
    <table class="related"><tr><th>관련된 모듈</th><th>관련된 지시어</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_env.html">mod_env</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li><li><code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code></li><li><code class="module"><a href="./mod/mod_unique_id.html">mod_unique_id</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#unsetenv">UnsetEnv</a></code></li></ul></td></tr></table>

    <h3><a name="basic-manipulation" id="basic-manipulation">기본적인 환경설정</a></h3>
        

        <p>아파치에서 환경변수를 설정하는 가장 기본적인 방법은
        무조건적인 <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code> 지시어를 사용하는 것이다. <code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code> 지시어를 사용하여
        서버를 시작한 쉘에서 환경변수를 가져올 수도 있다.</p>

    
    <h3><a name="conditional" id="conditional">요청에 따른 조건부 설정</a></h3>
        

        <p>더 유연하게, mod_setenvif가 제공하는 지시어는 요청마다
        요청의 특징에 따라 환경변수를 설정한다. 예를 들어, 특정
        브라우저로 (User-Agent) 요청하거나 특정 Referer (맞춤법이
        틀리지 않았다) 헤더가 있는 경우에만 변수를 설정할 수
        있다. 심지어 mod_rewrite에 있는 <code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>의
        <code>[E=...]</code> 옵션을 사용하여 더 유연하게 환경변수를
        설정할 수도 있다.</p>

    
    <h3><a name="unique-identifiers" id="unique-identifiers">유일한 식별자</a></h3>
        

        <p>마지막으로 mod_unique_id는 각 요청에 대해 어떤 경우에도
        "모든" 요청중에 확실히 유일한(겹치지않은) 값으로
        <code>UNIQUE_ID</code> 환경변수를 설정한다.</p>

    
    <h3><a name="standard-cgi" id="standard-cgi">표준 CGI 변수</a></h3>
        

        <p>CGI 스크립트와 SSI 문서는 아파치 설정에서 설정하였거나
        쉘에서 가져온 환경변수 외에 추가로 <a href="http://cgi-spec.golux.com/">CGI 규약</a>이 규정한
        요청에 대한 정보를 알려주는 환경변수들을 받는다.</p>

    
    <h3><a name="caveats" id="caveats">주의할 점</a></h3>
        

        <ul>
          <li>환경설정 지시어를 사용하여 표준 CGI 변수를 무시하거나
          수정할 수 없다.</li>

          <li><a href="suexec.html">suexec</a>가 CGI 스크립트를
          실행하는 경우, 시작하기전에 CGI 스크립트의 환경은
          <em>안전한</em> 변수들만 가지도록 청소된다.
          <em>안전한</em> 변수 목록은 컴파일시
          <code>suexec.c</code>에 정의된다.</li>

          <li>포팅을 위해 환경변수 이름에는 오직 문자, 숫자,
          밑줄문자만 사용하는 것이 좋다. 또, 첫번째 문자로
          숫자를 사용하지않는 것이 좋다. CGI 스크립트나 SSI
          페이지에 넘어갈때 이외의 문자는 밑줄로 대체된다.</li>
        </ul>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="using" id="using">환경변수 사용하기</a></h2>
    

    <table class="related"><tr><th>관련된 모듈</th><th>관련된 지시어</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_authz_host.html">mod_authz_host</a></code></li><li><code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="./mod/mod_ext_filter.html">mod_ext_filter</a></code></li><li><code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code></li><li><code class="module"><a href="./mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_authz_host.html#allow">Allow</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code></li><li><code class="directive"><a href="./mod/mod_authz_host.html#deny">Deny</a></code></li><li><code class="directive"><a href="./mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code></li><li><code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li></ul></td></tr></table>

    <h3><a name="cgi-scripts" id="cgi-scripts">CGI 스크립트</a></h3>
        

        <p>환경변수의 주된 용도중 하나는 CGI 스크립트와 정보를
        교환하는 것이다. 앞에서 설명했듯이 아파치 설정에서 설정한
        변수외에 요청에 대한 표준 정보를 가진 변수가 CGI 스크립트로
        넘어간다. 더 자세한 내용은 <a href="howto/cgi.html">CGI
        투토리얼</a>을 참고하라.</p>

    
    <h3><a name="ssi-pages" id="ssi-pages">SSI 페이지</a></h3>
        

        <p>mod_include의 <code>INCLUDES</code> 필터가 처리하는
        서버파싱 (SSI) 문서는 <code>echo</code> 요소를 사용하여
        환경변수를 출력할 수 있고, 환경변수를 사용하여 요청의
        특징에 따라 흐름제어 요소로 페이지의 일부를 변경할 수
        있다. 아파치는 또 SSI 문서에게 위에서 설명한 표준 CGI
        환경변수를 제공한다. 더 자세한 내용은 <a href="howto/ssi.html">SSI 투토리얼</a>을 참고하라.</p>

    
    <h3><a name="access-control" id="access-control">접근제어</a></h3>
        

        <p><code>allow from env=</code>과 <code>deny from env=</code>
        지시어를 사용하여 환경변수 값에 따라 서버로의 접근을
        조절할 수 있다. <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>와 같이 사용하면
        클라이언트의 특징에 따라 자유롭게 서버로의 접근을 제어할
        수 있다. 예를 들어, 특정 브라우저의 (User-Agent) 접근을
        거부할 수 있다.</p>

    
    <h3><a name="logging" id="logging">조건부 로그</a></h3>
        

        <p><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code>의
        <code>%e</code> 옵션을 사용하여 환경변수를 접근 로그에
        기록할 수 있다. 또, <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> 지시어의
        조건부 형식을 사용하면 환경변수의 상황에 따라 요청을
        로그할지 여부를 결정할 수 있다. <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>와 같이 사용하여
        어떤 요청을 로그할지 자유롭게 결정할 수 있다. 예를 들어,
        파일명이 <code>gif</code>로 끝나는 요청은 로그하지 않거나,
        외부 네트웍에 있는 클라이언트의 요청만을 로그할 수 있다.</p>

    
    <h3><a name="response-headers" id="response-headers">조건부 응답 헤더</a></h3>
        

        <p><code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code>
        지시어는 클라이언트에게 응답을 보낼때 환경변수의 유무에
        따라 어떤 HTTP 헤더를 포함할지 결정할 수 있다. 예를
        들어, 클라이언트의 요청에 특정 헤더가 있는 경우에만
        어떤 응답 헤더를 보낼 수 있다.</p>

    

    <h3><a name="external-filter" id="external-filter">외부 필터 실행하기</a></h3>
        

        <p><code class="module"><a href="./mod/mod_ext_filter.html">mod_ext_filter</a></code>의 <code class="directive"><a href="./mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code>
        지시어로 설정한 외부 필터를 <code>disableenv=</code>와
        <code>enableenv=</code> 옵션을 사용하여 환경변수에 따라
        선택적으로 실행할 수 있다.</p>
    

    <h3><a name="url-rewriting" id="url-rewriting">URL 재작성(Rewriting)</a></h3>
        

        <p><code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>의
        <em>TestString</em>에 <code>%{ENV:...}</code> 형식을
        사용하면 mod_rewrite의 재작성 엔진이 환경변수에 따라
        다르게 행동한다. mod_rewrite에서 앞에 <code>ENV:</code>를
        붙이지않고 접근하는 변수는 실제 환경변수가 아님을 주의하라.
        그들은 다른 모듈에서 읽을 수 없는 mod_rewrite에 한정된
        변수다.</p>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="special" id="special">특별한 목적의 환경변수</a></h2>
    

        <p>클라이언트와 원활한 동작하기위해 아파치는 특별한
        클라이언트에 대해 자신의 행동을 수정한다. 보통 <code class="directive"><a href="./mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code>에서
        환경변수를 정의하여 이런 문제를 해결한다. 그러나 <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code>와 <code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code>로도 가능하다.</p>

    <h3><a name="downgrade" id="downgrade">downgrade-1.0</a></h3>
        

        <p>요청이 이후 버전을 사용하더라도 HTTP/1.0 요청으로
        처리한다.</p>

    
    <h3><a name="force-gzip" id="force-gzip">force-gzip</a></h3>
        
          <p><code>DEFLATE</code> 필터를 사용할때 이 환경변수는
          브라우저의 accept-encoding 설정을 무시하고 무조건
          압축된 결과를 보낸다.</p>
    
    <h3><a name="force-no-vary" id="force-no-vary">force-no-vary</a></h3>
        

        <p>응답을 클라이언트에게 보내기 전에 응답 헤더에서
        <code>Vary</code> 필드를 뺀다. 어떤 클라이언트는 이
        필드를 제대로 해석하지 못한다. 이 변수는 이런 문제를
        해결한다. 또한, 이 변수는
        <strong>force-response-1.0</strong>을 가정한다.</p>

    
    <h3><a name="force-response" id="force-response">force-response-1.0</a></h3>
        

        <p>HTTP/1.0 요청을 하는 클라이언트에게 HTTP/1.0 응답을
        강제한다. 원래 AOL 프록시에 문제가 있어서 만들어졌다.
        어떤 HTTP/1.0 클라이언트는 HTTP/1.1 응답을 받으면 제대로
        동작하지 않으므로, 이 문제를 해결하기위해 사용한다.</p>
    

    <h3><a name="gzip-only-text-html" id="gzip-only-text-html">gzip-only-text/html</a></h3>
        

      <p>값이 "1"이면 <code>text/html</code>이 아닌 content-type에
      대해 <code class="module"><a href="./mod/mod_deflate.html">mod_deflate</a></code>의 DEFLATE 출력필터를
      사용하지 않는다. (gzip 뿐만 아니라 "identity"가 아닌 모든
      인코딩의) 정적으로 압축한 파일의 경우에도
      <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code>은 이 변수를 참고한다.</p>
    

    <h3><a name="no-gzip" id="no-gzip">no-gzip</a></h3>

        <p>이 옵션을 설정하면 <code class="module"><a href="./mod/mod_deflate.html">mod_deflate</a></code>의
        <code>DEFLATE</code> 필터를 사용하지 않고,
        <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code>은 인코딩된 자원을
        보내지 않는다.</p>

    

    <h3><a name="nokeepalive" id="nokeepalive">nokeepalive</a></h3>
        

        <p><code class="directive"><a href="./mod/core.html#keepalive">KeepAlive</a></code>를
        무시한다.</p>

    

    <h3><a name="prefer-language" id="prefer-language">prefer-language</a></h3>

        <p>이 변수는 <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code>의 행동에
        영향을 미친다. 변수가 (<code>en</code>, <code>ja</code>,
        <code>x-klingon</code> 등) 언어태그를 담고있다면,
        <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code>는 그 언어로 된 변형을
        보내길 시도한다. 그런 변형이 없다면 일반적인 <a href="content-negotiation.html">협상</a> 과정을 시작한다.</p>

    

    <h3><a name="redirect-carefully" id="redirect-carefully">redirect-carefully</a></h3>
        

        <p>서버가 더 조심히 클라이언트에게 리다이렉션을 보낸다.
        보통 리다이렉션을 처리하는데 문제가 있는 클라이언트을
        위해 사용한다. 원래 Microsoft의 WebFolders 소프트웨어가
        DAV 메써드를 통해 디렉토리 자원의 리다이렉션을 처리하는데
        문제가 있어서 만들어졌다.</p>

    

   <h3><a name="suppress-error-charset" id="suppress-error-charset">suppress-error-charset</a></h3>
       

    <p><em>2.0.40 이후 버전에 있다</em></p>

    <p>아파치가 클라이언트의 요청에 대한 응답으로 리다이렉션을
    보낼때 클라이언트가 자동으로 리다이렉션을 따라가지 못하는(혹은
    않는) 경우에 대비하여 응답에 사용자에게 보여줄 문구를 포함한다.
    아파치는 보통 이 글을 아파치가 사용하는 문자집합인 ISO-8859-1로
    표시한다.</p>
    <p>그러나 리다이렉션된 페이지가 다른 문자집합을 사용할 경우
    어떤 이상한 브라우저 버전은 실제 페이지가 아니라 리다이렉션
    페이지의 문자집합을 사용하려고 한다. 예를 들어, 그리스어가
    이상하게 보일 수 있다.</p>
    <p>이 환경변수는 아파치가 리다이렉션 페이지에 문자집합을
    설정하지않도록 하여, 이런 브라우저가 실제 페이지의 문자집합을
    올바로 사용하게 만든다.</p>

   

  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">예제</a></h2>
    

    <h3><a name="misbehaving" id="misbehaving">잘못 동작하는 클라이언트들을 위해 프로토콜 행동
        변경하기</a></h3>
        

        <p>클라이언트들의 이미 알려진 문제를 해결하기위해
        httpd.conf에 다음 내용을 포함하길 바란다.</p>
<div class="example"><pre>
#
# 다음 지시어들은 일반적인 HTTP 응답을 변경한다.
# 첫번째 지시어는 Netscape 2.x와 이를 가장한 브라우저에게
# keepalive를 사용하지 않는다. 이들 브라우저 구현에 문제가 있다.
# 두번째 지시어는 HTTP/1.1 구현이 잘못되었고 301이나 302
# (리다이렉션) 응답에 사용한 keepalive를 제대로 지원하지
# 못하는 Microsoft Internet Explorer 4.0b2를 위한 것이다.
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0

#
# 다음 지시어는 기본적인 HTTP/1.1 응답을 이해하지 못하여
# HTTP/1.0 규약을 어기는 브라우저에게 HTTP/1.1 응답을 보내지 않는다.
#
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0</pre></div>

    
    <h3><a name="no-img-log" id="no-img-log">접근 로그에 이미지에 대한 요청을 로그하지 않기</a></h3>
        

        <p>이 예제는 이미지에 대한 요청을 접근 로그에 기록하지
        않는다. 특정 디렉토리에 대한 혹은 특정 호스트에서 온
        요청을 로그하지 않도록 쉽게 수정할 수 있다.</p>
    <div class="example"><pre>
SetEnvIf Request_URI \.gif image-request
SetEnvIf Request_URI \.jpg image-request
SetEnvIf Request_URI \.png image-request
CustomLog logs/access_log common env=!image-request</pre></div>

    
    <h3><a name="image-theft" id="image-theft">"이미지 도둑" 방지</a></h3>
        

        <p>이 예는 현재 서버외의 사용자가 페이지에 서버에 있는
        이미지를 포함하지 못하도록 하는 방법을 설명한다. 이
        설정을 권장하지는 않으며, 제한된 경우에만 동작한다.
        우리는 모든 이미지가 /web/images 디렉토리 안에 있다고
        가정한다.</p>
    <div class="example"><pre>
SetEnvIf Referer "^http://www.example.com/" local_referal
# Referer 정보를 보내지 않는 브라우저를 허용한다
SetEnvIf Referer "^$" local_referal
&lt;Directory /web/images&gt;
   Order Deny,Allow
   Deny from all
   Allow from env=local_referal
&lt;/Directory&gt;</pre></div>

        <p>이 기법에 대한 자세한 설명은 ApacheToday 투토리얼 "<a href="http://apachetoday.com/news_story.php3?ltsn=2000-06-14-002-01-PS">
    Keeping Your Images from Adorning Other Sites</a>"를 참고하라.</p>
    
  </div></div>
<div class="bottomlang">
<p><span>가능한 언어: </span><a href="./en/env.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./ja/env.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/env.html" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/env.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="./mod/">모듈</a> | <a href="./mod/directives.html">지시어들</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">용어</a> | <a href="./sitemap.html">사이트맵</a></p></div>
</body></html>