mirror of
				https://github.com/apache/httpd.git
				synced 2025-10-31 19:10:37 +03:00 
			
		
		
		
	git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1873834 13f79535-47bb-0310-9956-ffa450edef68
		
			
				
	
	
		
			331 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			331 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="EUC-KR" ?>
 | |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
 | |
| <?xml-stylesheet type="text/xsl" href="../style/manual.ko.xsl"?>
 | |
| <!-- English Revision: 151408:1873677 (outdated) -->
 | |
| 
 | |
| <!--
 | |
|  Licensed to the Apache Software Foundation (ASF) under one or more
 | |
|  contributor license agreements.  See the NOTICE file distributed with
 | |
|  this work for additional information regarding copyright ownership.
 | |
|  The ASF licenses this file to You under the Apache License, Version 2.0
 | |
|  (the "License"); you may not use this file except in compliance with
 | |
|  the License.  You may obtain a copy of the License at
 | |
| 
 | |
|      http://www.apache.org/licenses/LICENSE-2.0
 | |
| 
 | |
|  Unless required by applicable law or agreed to in writing, software
 | |
|  distributed under the License is distributed on an "AS IS" BASIS,
 | |
|  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
|  See the License for the specific language governing permissions and
 | |
|  limitations under the License.
 | |
| -->
 | |
| 
 | |
| <modulesynopsis metafile="mod_headers.xml.meta">
 | |
| 
 | |
| <name>mod_headers</name>
 | |
| <description>HTTP 요청 헤더와 응답 헤더 수정</description>
 | |
| <status>Extension</status>
 | |
| <sourcefile>mod_headers.c</sourcefile>
 | |
| <identifier>headers_module</identifier>
 | |
| <compatibility><directive
 | |
| module="mod_headers">RequestHeader</directive>는 아파치 2.0에만
 | |
| 있다</compatibility>
 | |
| 
 | |
| <summary>
 | |
|     <p>이 모듈은 HTTP 요청 헤더와 응답 헤더를 조절하고 수정하는
 | |
|     지시어들을 제공한다. 헤더를 합치거나 대체, 제거할 수 있다.</p>
 | |
| </summary>
 | |
| 
 | |
| <section id="order"><title>처리 순서</title>
 | |
| 
 | |
|     <p><module>mod_headers</module>가 제공하는 지시어는 서버설정의
 | |
|     거의 모든 장소에서 사용할 수 있으며, <a
 | |
|     href="../sections.html">설정 섹션</a>으로 감싸서 지시어의
 | |
|     범위를 제한할 수도 있다.</p>
 | |
| 
 | |
|     <p>처리순서는 중요하며, 설정파일에 나온 순서와 <a
 | |
|     href="../sections.html#mergin">설정 섹션</a>의 영향을 받는다.
 | |
|     다음 두 지시어를 반대로 적으면 효과가 달라진다.</p>
 | |
| 
 | |
|     <example>
 | |
|       RequestHeader append MirrorID "mirror 12"<br />
 | |
|       RequestHeader unset MirrorID
 | |
|     </example>
 | |
| 
 | |
|     <p>위와 같이 적으면 <code>MirrorID</code> 헤더가 나오지
 | |
|     않는다. 반대로 적으면 MirrorID 헤더를 "mirror 12"로 설정한다.</p>
 | |
| </section>
 | |
| 
 | |
| <section id="early"><title>이른(early) 처리와 늦은(late) 처리</title>
 | |
|     <p><module>mod_headers</module>를 요청 초기나 나중에 적용할
 | |
|     수 있다. 보통은 내용생성자를 실행하기 직전에 요청 헤더를
 | |
|     설정하고 응답을 네트웍에 쓸때 응답 헤더를 설정하는 늦은(late)
 | |
|     방식을 사용한다. 실제 서비스하는 서버에서는 항상 느린 방식을
 | |
|     사용하라.</p>
 | |
| 
 | |
|     <p>이른(early) 방식은 개발자를 위해 검사/디버깅용으로 만들었다.
 | |
|     <code>early</code> 키워드를 사용하여 정의한 지시어는 요청을
 | |
|     처리하기 시작할때 설정한다. 즉, 다른 요청을 모의실험하거나
 | |
|     검사를 하기위해 사용할 수 있지만, 응답을 생성하기 전에 다른
 | |
|     모듈이 불시에 헤더를 수정할 수 있다.</p>
 | |
| 
 | |
|     <p>요청경로에 대한 설정을 살펴보기 전에 이른 지시어를
 | |
|     처리하기때문에 이른 헤더 지시어는 주서버이나 가상호스트
 | |
|     사용장소에서만 사용할 수 있다. 이른 지시어는 요청경로에
 | |
|     의존할 수 없기때문에 <code><Directory></code>나
 | |
|     <code><Location></code>같은 사용장소에서 사용할 수
 | |
|     없다.</p>
 | |
| </section>
 | |
| 
 | |
| <section id="examples"><title>예제</title>
 | |
| 
 | |
|     <ol>
 | |
|       <li>
 | |
|         "TS"로 시작하는 모든 요청 헤더를 응답 헤더로 복사한다.
 | |
| 
 | |
|         <example>
 | |
|           Header echo ^TS
 | |
|         </example>
 | |
|       </li>
 | |
| 
 | |
|       <li>
 | |
|         응답에 요청을 받은 시간과 요청을 서비스하는데 걸릴 시간을
 | |
|         알려주는 <code>MyHeader</code> 헤더를 추가한다. 클라이언트는
 | |
|         이 헤더를 보고 서버의 부하를 추정하거나 클라이언트와
 | |
|         서버간의 병목점을 찾을 수 있다.
 | |
| 
 | |
|         <example>
 | |
|           Header add MyHeader "%D %t"
 | |
|         </example>
 | |
| 
 | |
|         <p>응답에 다음과 같은 헤더가 생긴다.</p>
 | |
| 
 | |
|         <example>
 | |
|           MyHeader: D=3775428 t=991424704447256
 | |
|         </example>
 | |
|       </li>
 | |
| 
 | |
|       <li>
 | |
|         Joe에게 안녕
 | |
| 
 | |
|         <example>
 | |
|           Header add MyHeader "Hello Joe. It took %D microseconds \<br />
 | |
|           for Apache to serve this request."
 | |
|         </example>
 | |
| 
 | |
|         <p>응답에 다음과 같은 헤더가 생긴다.</p>
 | |
| 
 | |
|         <example>
 | |
|           MyHeader: Hello Joe. It took D=3775428 microseconds for Apache
 | |
|           to serve this request.
 | |
|         </example>
 | |
|       </li>
 | |
| 
 | |
|       <li>
 | |
|         요청에 "MyRequestHeader" 헤더가 있는 경우에만 선택적으로
 | |
|         응답에 <code>MyHeader</code>를 보낸다. 특정 클라이언트에게만
 | |
|         응답에 헤더를 추가할때 유용하다. 이 예제가 동작하려면
 | |
|         <module>mod_setenvif</module> 모듈이 필요하다.
 | |
| 
 | |
|         <example>
 | |
|           SetEnvIf MyRequestHeader value HAVE_MyRequestHeader<br />
 | |
|           Header add MyHeader "%D %t mytext" env=HAVE_MyRequestHeader<br />
 | |
|        </example>
 | |
| 
 | |
|        <p>HTTP 요청에 <code>MyRequestHeader: value</code> 헤더가
 | |
|        있다면, 응답에 다음과 같은 헤더가 생긴다.</p>
 | |
| 
 | |
|        <example>
 | |
|          MyHeader: D=3775428 t=991424704447256 mytext
 | |
|        </example>
 | |
|       </li>
 | |
|     </ol>
 | |
| </section>
 | |
| 
 | |
| <directivesynopsis>
 | |
| <name>RequestHeader</name>
 | |
| <description>HTTP 요청 헤더를 구성한다</description>
 | |
| <syntax>RequestHeader set|append|add|unset <var>header</var>
 | |
| [<var>value</var>] [early|env=[!]<var>variable</var>]</syntax>
 | |
| <contextlist><context>server config</context><context>virtual host</context>
 | |
| <context>directory</context><context>.htaccess</context></contextlist>
 | |
| <override>FileInfo</override>
 | |
| 
 | |
| <usage>
 | |
|     <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>는 일반
 | |
|     문자열이나 형식을 기술하는 문자열이며, 두가지를 같이 사용할
 | |
|     수도 있다. 지원하는 형식기술자는 <directive
 | |
|     module="mod_headers">Header</directive>와 같으므로 자세한
 | |
|     내용은 그곳을 참고하라.</p>
 | |
| 
 | |
|     <p><directive>RequestHeader</directive> 지시어 뒤에 행동이
 | |
|     일어날 조건을 지시하는 추가 아규먼트나 <a
 | |
|     href="#early">이른 처리</a>를 뜻하는 키워드
 | |
|     <code>early</code>가 나올 수 있다. <code>env=<var>...</var></code>
 | |
|     아규먼트를 사용한 경우 해당 <a href="../env.html">환경변수</a>가
 | |
|     존재한다면 (혹은 <code>env=!<var>...</var></code>에 나온
 | |
|     환경변수가 존재하지 않다면) <directive>RequestHeader</directive>
 | |
|     지시어가 동작한다. 그렇지 않으면 지시어는 요청에 아무 영향을
 | |
|     미치지 않는다.</p>
 | |
| 
 | |
|     <p><a href="#early">이른</a> 방식이 아니라면 fixup 단계에서
 | |
|     요청에 해당하는 핸들러를 실행하기 직전에
 | |
|     <directive>RequestHeader</directive> 지시어를 처리한다.
 | |
|     그래서 브라우저에 따라 혹은 아파치 입력필터가 헤더를 덮어쓰거나
 | |
|     수정할 수 있다.</p>
 | |
| </usage>
 | |
| </directivesynopsis>
 | |
| 
 | |
| <directivesynopsis>
 | |
| <name>Header</name>
 | |
| <description>HTTP 응답 헤더를 구성한다</description>
 | |
| <syntax>Header [<var>condition</var>] set|append|add|unset|echo
 | |
| <var>header</var> [<var>value</var>] [early|env=[!]<var>variable</var>]</syntax>
 | |
| <contextlist><context>server config</context><context>virtual host</context>
 | |
| <context>directory</context><context>.htaccess</context></contextlist>
 | |
| <override>FileInfo</override>
 | |
| 
 | |
| <usage>
 | |
|     <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 border="1" style="zebra">
 | |
|     <columnspec><column width=".25"/><column width=".75"/></columnspec>
 | |
|     <tr><th>형식</th><th>설명</th></tr>
 | |
|     <tr><td><code>%%</code></td>
 | |
|         <td>퍼센트 기호</td></tr>
 | |
| 
 | |
|     <tr><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><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><module>mod_ssl</module>이 동작한다면, <a
 | |
|         href="mod_ssl.html#envvars">SSL 환경변수</a>
 | |
|         <code>FOOBAR</code>의 내용.</td></tr>
 | |
| 
 | |
|     </table>
 | |
| 
 | |
|     <note><title>주의</title>
 | |
|       <p><code>%s</code> 형식 지시자는 아파치 2.1 이후에만 있다.
 | |
|       이 지시자는 <code>SSLOptions +StdEnvVars</code>를 사용하는
 | |
|       부담을 덜기위해 <code>%e</code> 대신 사용할 수 있다. 어떤
 | |
|       이유에서건 <code>SSLOptions +StdEnvVars</code>를 사용해야
 | |
|       한다면, <code>%e</code>는 <code>%s</code> 보다 훨씬 더
 | |
|       효율적이다.</p>
 | |
|     </note> 
 | |
| 
 | |
|     <p><directive>Header</directive> 지시어 뒤에 행동이 일어날
 | |
|     조건을 지시하는 추가 아규먼트나 <a href="#early">이른 처리</a>를
 | |
|     뜻하는 키워드 <code>early</code>가 나올 수 있다.
 | |
|     <code>env=<var>...</var></code> 아규먼트를 사용한 경우 해당
 | |
|     <a href="../env.html">환경변수</a>가 존재한다면 (혹은
 | |
|     <code>env=!<var>...</var></code>에 나온 환경변수가 존재하지
 | |
|     않다면) <directive>Header</directive> 지시어가 동작한다.
 | |
|     그렇지 않으면 지시어는 요청에 아무 영향을 미치지 않는다.</p>
 | |
| 
 | |
|     <p><a href="#early">이른</a> 방식이 아니라면 응답을 네트웍으로
 | |
|     보내기 직전에 <directive>Header</directive> 지시어를 처리한다.
 | |
|     그래서 헤더 필터가 추가하는 헤더를 제외한 대부분의 헤더를
 | |
|     설정하거나 덮어쓸 수 있다.</p>
 | |
| </usage>
 | |
| </directivesynopsis>
 | |
| 
 | |
| </modulesynopsis>
 | |
| 
 |