1
0
mirror of https://github.com/apache/httpd.git synced 2025-04-18 22:24:07 +03:00
apache/docs/manual/mod/mod_headers.xml.ko
Lucien Gentis d3eeee08a5 fr doc rebuild.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1873834 13f79535-47bb-0310-9956-ffa450edef68
2020-02-09 16:46:53 +00:00

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>&lt;Directory&gt;</code>
<code>&lt;Location&gt;</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>