<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="ko"><head><META http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<meta content="width=device-width, initial-scale=1" name="viewport">
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>mod_headers - Apache HTTP Server Version 2.4</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 rel="stylesheet" type="text/css" href="../style/css/prettify.css">
<script src="../style/scripts/prettify.min.js">
</script>

<link href="../images/favicon.png" rel="shortcut icon"></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">모듈</a> | <a href="../mod/quickreference.html">지시어들</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">용어</a> | <a href="../sitemap.html">사이트맵</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Report a bug</a></p>
<p class="apache">Apache HTTP Server Version 2.4</p>
<img alt="" src="../images/feather.png"></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif"></a></div>
<div id="path">
<a href="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">HTTP Server</a> &gt; <a href="https://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.4</a> &gt; <a href="./">모듈</a></div>
<div id="page-content">
<div id="preamble"><h1>아파치 모듈 mod_headers</h1>
<button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button>
<div class="toplang">
<p><span>가능한 언어: </span><a href="../en/mod/mod_headers.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_headers.html" hreflang="fr" rel="alternate" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/mod_headers.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_headers.html" title="Korean">&nbsp;ko&nbsp;</a></p>
</div>
<div class="outofdate">이 문서는 최신판 번역이 아닙니다.
            최근에 변경된 내용은 영어 문서를 참고하세요.</div>
<table class="module"><tr><th><a href="module-dict.html#Description">설명:</a></th><td>HTTP 요청 헤더와 응답 헤더 수정</td></tr>
<tr><th><a href="module-dict.html#Status">상태:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">모듈명:</a></th><td>headers_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">소스파일:</a></th><td>mod_headers.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">지원:</a></th><td><code class="directive"><a href="#requestheader">RequestHeader</a></code>는 아파치 2.0에만
있다</td></tr></table>
<h3>요약</h3>

    <p>이 모듈은 HTTP 요청 헤더와 응답 헤더를 조절하고 수정하는
    지시어들을 제공한다. 헤더를 합치거나 대체, 제거할 수 있다.</p>
</div>
<div id="quickview"><h3>주제</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif"> <a href="#order">처리 순서</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#early">이른(early) 처리와 늦은(late) 처리</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#examples">예제</a></li>
</ul><h3 class="directives">지시어들</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif"> <a href="#header">Header</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#requestheader">RequestHeader</a></li>
</ul>
<h3>Bugfix checklist</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">httpd changelog</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_headers">Known issues</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_headers">Report a bug</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="order">처리 순서 <a title="Permanent link" href="#order" class="permalink">&para;</a></h2>

    <p><code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code>가 제공하는 지시어는 서버설정의
    거의 모든 장소에서 사용할 수 있으며, <a href="../sections.html">설정 섹션</a>으로 감싸서 지시어의
    범위를 제한할 수도 있다.</p>

    <p>처리순서는 중요하며, 설정파일에 나온 순서와 <a href="../sections.html#mergin">설정 섹션</a>의 영향을 받는다.
    다음 두 지시어를 반대로 적으면 효과가 달라진다.</p>

    <div class="example"><p><code>
      RequestHeader append MirrorID "mirror 12"<br>
      RequestHeader unset MirrorID
    </code></p></div>

    <p>위와 같이 적으면 <code>MirrorID</code> 헤더가 나오지
    않는다. 반대로 적으면 MirrorID 헤더를 "mirror 12"로 설정한다.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="early">이른(early) 처리와 늦은(late) 처리 <a title="Permanent link" href="#early" class="permalink">&para;</a></h2>
    <p><code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code>를 요청 초기나 나중에 적용할
    수 있다. 보통은 내용생성자를 실행하기 직전에 요청 헤더를
    설정하고 응답을 네트웍에 쓸때 응답 헤더를 설정하는 늦은(late)
    방식을 사용한다. 실제 서비스하는 서버에서는 항상 느린 방식을
    사용하라.</p>

    <p>이른(early) 방식은 개발자를 위해 검사/디버깅용으로 만들었다.
    <code>early</code> 키워드를 사용하여 정의한 지시어는 요청을
    처리하기 시작할때 설정한다. 즉, 다른 요청을 모의실험하거나
    검사를 하기위해 사용할 수 있지만, 응답을 생성하기 전에 다른
    모듈이 불시에 헤더를 수정할 수 있다.</p>

    <p>요청경로에 대한 설정을 살펴보기 전에 이른 지시어를
    처리하기때문에 이른 헤더 지시어는 주서버이나 가상호스트
    사용장소에서만 사용할 수 있다. 이른 지시어는 요청경로에
    의존할 수 없기때문에 <code>&lt;Directory&gt;</code>나
    <code>&lt;Location&gt;</code>같은 사용장소에서 사용할 수
    없다.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="examples">예제 <a title="Permanent link" href="#examples" class="permalink">&para;</a></h2>

    <ol>
      <li>
        "TS"로 시작하는 모든 요청 헤더를 응답 헤더로 복사한다.

        <div class="example"><p><code>
          Header echo ^TS
        </code></p></div>
      </li>

      <li>
        응답에 요청을 받은 시간과 요청을 서비스하는데 걸릴 시간을
        알려주는 <code>MyHeader</code> 헤더를 추가한다. 클라이언트는
        이 헤더를 보고 서버의 부하를 추정하거나 클라이언트와
        서버간의 병목점을 찾을 수 있다.

        <div class="example"><p><code>
          Header add MyHeader "%D %t"
        </code></p></div>

        <p>응답에 다음과 같은 헤더가 생긴다.</p>

        <div class="example"><p><code>
          MyHeader: D=3775428 t=991424704447256
        </code></p></div>
      </li>

      <li>
        Joe에게 안녕

        <div class="example"><p><code>
          Header add MyHeader "Hello Joe. It took %D microseconds \<br>
          for Apache to serve this request."
        </code></p></div>

        <p>응답에 다음과 같은 헤더가 생긴다.</p>

        <div class="example"><p><code>
          MyHeader: Hello Joe. It took D=3775428 microseconds for Apache
          to serve this request.
        </code></p></div>
      </li>

      <li>
        요청에 "MyRequestHeader" 헤더가 있는 경우에만 선택적으로
        응답에 <code>MyHeader</code>를 보낸다. 특정 클라이언트에게만
        응답에 헤더를 추가할때 유용하다. 이 예제가 동작하려면
        <code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code> 모듈이 필요하다.

        <div class="example"><p><code>
          SetEnvIf MyRequestHeader value HAVE_MyRequestHeader<br>
          Header add MyHeader "%D %t mytext" env=HAVE_MyRequestHeader<br>
       </code></p></div>

       <p>HTTP 요청에 <code>MyRequestHeader: value</code> 헤더가
       있다면, 응답에 다음과 같은 헤더가 생긴다.</p>

       <div class="example"><p><code>
         MyHeader: D=3775428 t=991424704447256 mytext
       </code></p></div>
      </li>
    </ol>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="header"><span id="Header">Header</span> 지시어 <a title="Permanent link" href="#header" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">설명:</a></th><td>HTTP 응답 헤더를 구성한다</td></tr>
<tr><th><a href="directive-dict.html#Syntax">문법:</a></th><td><code>Header [<var>condition</var>] set|append|add|unset|echo
<var>header</var> [<var>value</var>] [early|env=[!]<var>variable</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">사용장소:</a></th><td>주서버설정, 가상호스트, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override 옵션:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">상태:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">모듈:</a></th><td>mod_headers</td></tr>
</table>
    <p>이 지시어는 HTTP 응답 헤더를 합치거나 대체, 제거한다.
    내용 핸들러와 출력 필터가 실행한 직후에 헤더를 수정하기때문에
    보낼 헤더를 수정할 수 있다.</p>

    <p><var>condition</var>은 선택적으로 사용하며, 값으로
    <code>onsuccess</code> 혹은 <code>always</code>를 사용한다.
    이는 어떤 내부 헤더표에 동작할지를 결정한다.
    <code>onsuccess</code>는 <code>2<var>xx</var></code> 상태코드를
    뜻하고, <code>always</code>는 (<code>2<var>xx</var></code>를
    포함한) 모든 상태코드를 뜻한다. 특히 어떤 모듈이 설정한
    헤더를 해제하고 싶다면, 둘중 어떤 것을 사용할지 잘 살펴봐야
    한다.</p>

    <p>두번째 아규먼트에 따라 기능이 다르다. 두번째 아규먼트로
    아래 값중 하나를 사용할 수 있다.</p>

    <dl>
    <dt><code>set</code></dt>
    <dd>응답 헤더를 설정한다. 같은 이름으로 이미 헤더가 있다면
    대체한다. <var>value</var>에 형식문자열을 사용할 수 있다.</dd>

    <dt><code>append</code></dt>
    <dd>이미 존재하는 같은 이름의 응답 헤더에 추가한다. 기존
    헤더에 새로운 값을 합치면, 기존 헤더와 새로운 값 사이에
    쉼표를 붙인다. 이는 여러 헤더값을 지정하는 HTTP 표준 방식이다.</dd>

    <dt><code>add</code></dt>
    <dd>헤더가 이미 있더라도 응답 헤더를 추가한다. 그래서 같은
    이름의 헤더가 두개 (혹은 많이) 생길 수 있다. 이 경우 의외의
    결과가 발생할 수 있기때문에 보통 대신 <code>append</code>를
    사용해야 한다.</dd>

    <dt><code>unset</code></dt>
    <dd>이런 이름의 응답 헤더가 있다면 삭제한다. 같은 이름을
    가진 헤더가 여러개 있다면 모두 제거한다. <var>value</var>는
    적지 않는다.</dd>

    <dt><code>echo</code></dt>
    <dd>이런 이름의 요청 헤더를 그대로 응답 헤더로 보낸다.
    <var>header</var>에 정규표현식을 사용할 수 있다.
    <var>value</var>는 적지 않는다.</dd>
    </dl>

    <p>아규먼트 뒤에 <var>header</var> 이름이 나온다. 헤더명
    뒤에 콜론을 적을 수 있지만, 없어도 된다. <code>set</code>,
    <code>append</code>, <code>add</code>, <code>unset</code>에서
    대소문자는 무시한다. <code>echo</code>의 <var>header</var>
    이름은 대수문자를 구별하고 정규표현식을 사용할 수 있다.</p>

    <p><code>add</code>, <code>append</code>, <code>set</code>을
    사용할때는 세번째 아규먼트 <var>value</var>가 필요하다.
    <var>value</var> 안에 공백이 있다면 쌍따옴표로 묶어야 한다.
    <var>value</var>는 일반 문자열이나 형식을 기술하는 문자열이며,
    두가지를 같이 사용할 수도 있다. <var>value</var>에서 지원하는
    형식기술자는 다음과 같다.</p>

    <table class="bordered"><tr class="header"><th>형식</th><th>설명</th></tr>
<tr><td><code>%%</code></td>
        <td>퍼센트 기호</td></tr>
<tr class="odd"><td><code>%t</code></td>
        <td>요청을 받은 시간을 국제표준시로 epoch (1970년 1월
        1일) 이후 지난 마이크로초 단위로. 값 앞에 <code>t=</code>이
        붙는다.</td></tr>
<tr><td><code>%D</code></td>
        <td>요청을 받은 시간부터 헤더를 네트웍에 쓸때까지 걸린
        시간. 요청의 기간을 잰다. 값 앞에 <code>D=</code>이
        붙는다.</td></tr>
<tr class="odd"><td><code>%{FOOBAR}e</code></td>
        <td><a href="../env.html">환경변수</a> <code>FOOBAR</code>의
        내용.</td></tr>
<tr><td><code>%{FOOBAR}s</code></td>
        <td><code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>이 동작한다면, <a href="mod_ssl.html#envvars">SSL 환경변수</a>
        <code>FOOBAR</code>의 내용.</td></tr>
</table>

    <div class="note"><h3>주의</h3>
      <p><code>%s</code> 형식 지시자는 아파치 2.1 이후에만 있다.
      이 지시자는 <code>SSLOptions +StdEnvVars</code>를 사용하는
      부담을 덜기위해 <code>%e</code> 대신 사용할 수 있다. 어떤
      이유에서건 <code>SSLOptions +StdEnvVars</code>를 사용해야
      한다면, <code>%e</code>는 <code>%s</code> 보다 훨씬 더
      효율적이다.</p>
    </div> 

    <p><code class="directive">Header</code> 지시어 뒤에 행동이 일어날
    조건을 지시하는 추가 아규먼트나 <a href="#early">이른 처리</a>를
    뜻하는 키워드 <code>early</code>가 나올 수 있다.
    <code>env=<var>...</var></code> 아규먼트를 사용한 경우 해당
    <a href="../env.html">환경변수</a>가 존재한다면 (혹은
    <code>env=!<var>...</var></code>에 나온 환경변수가 존재하지
    않다면) <code class="directive">Header</code> 지시어가 동작한다.
    그렇지 않으면 지시어는 요청에 아무 영향을 미치지 않는다.</p>

    <p><a href="#early">이른</a> 방식이 아니라면 응답을 네트웍으로
    보내기 직전에 <code class="directive">Header</code> 지시어를 처리한다.
    그래서 헤더 필터가 추가하는 헤더를 제외한 대부분의 헤더를
    설정하거나 덮어쓸 수 있다.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="requestheader"><span id="RequestHeader">RequestHeader</span> 지시어 <a title="Permanent link" href="#requestheader" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">설명:</a></th><td>HTTP 요청 헤더를 구성한다</td></tr>
<tr><th><a href="directive-dict.html#Syntax">문법:</a></th><td><code>RequestHeader set|append|add|unset <var>header</var>
[<var>value</var>] [early|env=[!]<var>variable</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">사용장소:</a></th><td>주서버설정, 가상호스트, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override 옵션:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">상태:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">모듈:</a></th><td>mod_headers</td></tr>
</table>
    <p>이 지시어는 HTTP 요청 헤더를 합치거나 대체, 제거한다.
    내용 핸들러가 실행하기 직전에 헤더를 수정하기때문에 받은
    헤더를 수정할 수 있다. 첫번째 아규먼트에 따라 기능이 다르다.
    첫번째 아규먼트로 아래 값중 하나를 사용할 수 있다.</p>

    <dl>
    <dt><code>set</code></dt>
    <dd>요청 헤더를 설정한다. 같은 이름으로 이미 헤더가 있다면
    대체한다</dd>

    <dt><code>append</code></dt>
    <dd>이미 존재하는 같은 이름의 요청 헤더에 추가한다. 기존
    헤더에 새로운 값을 합치면, 기존 헤더와 새로운 값 사이에
    쉼표를 붙인다. 이는 여러 헤더값을 지정하는 HTTP 표준 방식이다.</dd>

    <dt><code>add</code></dt>
    <dd>헤더가 이미 있더라도 요청 헤더를 추가한다. 그래서 같은
    이름의 헤더가 두개 (혹은 많이) 생길 수 있다. 이 경우 의외의
    결과가 발생할 수 있기때문에 보통 대신 <code>append</code>를
    사용해야 한다.</dd>

    <dt><code>unset</code></dt>
    <dd>이런 이름의 요청 헤더가 있다면 삭제한다. 같은 이름을
    가진 헤더가 여러개 있다면 모두 제거한다. <var>value</var>는
    적지 않는다.</dd>
    </dl>

    <p>아규먼트 뒤에 헤더명이 나온다. 헤더명 뒤에 콜론을 적을
    수 있지만, 없어도 된다. 대소문자는 무시한다. <code>add</code>,
    <code>append</code>, <code>set</code>을 사용할때는 세번째
    아규먼트 <var>value</var>가 필요하다. <var>value</var> 안에
    공백이 있다면 쌍따옴표로 묶어야 한다. unset을 사용할때는
    <var>value</var>를 적으면 안된다. <var>value</var>는 일반
    문자열이나 형식을 기술하는 문자열이며, 두가지를 같이 사용할
    수도 있다. 지원하는 형식기술자는 <code class="directive"><a href="#header">Header</a></code>와 같으므로 자세한
    내용은 그곳을 참고하라.</p>

    <p><code class="directive">RequestHeader</code> 지시어 뒤에 행동이
    일어날 조건을 지시하는 추가 아규먼트나 <a href="#early">이른 처리</a>를 뜻하는 키워드
    <code>early</code>가 나올 수 있다. <code>env=<var>...</var></code>
    아규먼트를 사용한 경우 해당 <a href="../env.html">환경변수</a>가
    존재한다면 (혹은 <code>env=!<var>...</var></code>에 나온
    환경변수가 존재하지 않다면) <code class="directive">RequestHeader</code>
    지시어가 동작한다. 그렇지 않으면 지시어는 요청에 아무 영향을
    미치지 않는다.</p>

    <p><a href="#early">이른</a> 방식이 아니라면 fixup 단계에서
    요청에 해당하는 핸들러를 실행하기 직전에
    <code class="directive">RequestHeader</code> 지시어를 처리한다.
    그래서 브라우저에 따라 혹은 아파치 입력필터가 헤더를 덮어쓰거나
    수정할 수 있다.</p>

</div>
</div>
<div class="bottomlang">
<p><span>가능한 언어: </span><a href="../en/mod/mod_headers.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_headers.html" hreflang="fr" rel="alternate" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/mod_headers.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_headers.html" title="Korean">&nbsp;ko&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2026 The Apache Software Foundation.<br>Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">모듈</a> | <a href="../mod/quickreference.html">지시어들</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">용어</a> | <a href="../sitemap.html">사이트맵</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Report a bug</a></p></div><script><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
var langToggle = document.querySelector('.lang-toggle');
var topLang = document.querySelector('.toplang');
if (langToggle && topLang) {
    langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); });
}
var qv = document.getElementById('quickview');
if (qv) {
    document.body.appendChild(qv);
    var qvBtn = document.createElement('button');
    qvBtn.className = 'qv-toggle';
    qvBtn.setAttribute('aria-label', 'Toggle page navigation');
    qvBtn.innerHTML = '&#9776;';
    document.body.appendChild(qvBtn);
    qvBtn.addEventListener('click', function() {
        var isOpen = qv.classList.toggle('open');
        if (isOpen) {
            qv.style.top = window.scrollY + 10 + 'px';
        }
    });
    window.addEventListener('scroll', function() { qv.classList.remove('open'); });
}
//--><!]]></script>
</body></html>