<?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>mod_deflate - 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>
<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> &gt; <a href="./">모듈</a></div>
<div id="page-content">
<div id="preamble"><h1>아파치 모듈 mod_deflate</h1>
<div class="toplang">
<p><span>가능한 언어: </span><a href="../en/mod/mod_deflate.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../ja/mod/mod_deflate.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_deflate.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>내용을 클라이언트로 보내기 전에 압축한다</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>deflate_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">소스파일:</a></th><td>mod_deflate.c</td></tr></table>
<h3>요약</h3>

    <p><code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> 모듈은 서버의 출력을 네트웍으로
    클라이언트에 보내기 전에 압축하는 <code>DEFLATE</code> 출력필터를
    제공한다.</p>
</div>
<div id="quickview"><h3 class="directives">지시어들</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#deflatebuffersize">DeflateBufferSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#deflatecompressionlevel">DeflateCompressionLevel</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#deflatefilternote">DeflateFilterNote</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#deflatememlevel">DeflateMemLevel</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#deflatewindowsize">DeflateWindowSize</a></li>
</ul>
<h3>주제</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#recommended">견본 설정</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#enable">압축하기</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxies">프록시 서버 다루기</a></li>
</ul><h3>참고</h3>
<ul class="seealso">
<li><a href="../filter.html">필터</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="recommended" id="recommended">견본 설정</a></h2>
    <p>급한 사람을 위한 견본 설정이다.</p>

    <div class="example"><h3>일부 type만 압축</h3><p><code>
      AddOutputFilterByType DEFLATE text/html text/plain text/xml
    </code></p></div>

    <p>아래 설정은 요약하였지만 그래도 복잡하다. 설정을 완전히
    이해한 후 사용하라.</p>

    <div class="example"><h3>이미지를 제외한 모든 것을 압축</h3><p><code>
      &lt;Location /&gt;<br />
      <span class="indent">
        # 필터를 추가한다<br />
        SetOutputFilter DEFLATE<br />
        <br />
        # Netscape 4.x에 문제가 있다...<br />
        BrowserMatch ^Mozilla/4         gzip-only-text/html<br />
        <br />
        # Netscape 4.06-4.08에 더 문제가 있다<br />
        BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
        <br />
        # MSIE은 Netscape라고 자신을 알리지만, 문제가 없다<br />
        # BrowserMatch \bMSIE             !no-gzip !gzip-only-text/html<br />
        <br />
        # 주의: 아파치 2.0.48까지 mod_setenvif의 버그때문에<br />
        # 위의 정규표현식은 동작하지 않는다. 원하는 효과를<br />
        # 얻기위해 다음과 같이 수정하여 사용한다:<br />
        BrowserMatch \bMSI[E]           !no-gzip !gzip-only-text/html<br />
        <br />
        # 이미지를 압축하지 않는다<br />
        SetEnvIfNoCase Request_URI \<br />
        <span class="indent">
          \.(?:gif|jpe?g|png)$ no-gzip dont-vary<br />
        </span>
        <br />
        # 프록시가 잘못된 내용을 전달하지않도록 한다<br />
        Header append Vary User-Agent env=!dont-vary<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="enable" id="enable">압축하기</a></h2>

    <h3><a name="output" id="output">출력 압축</a></h3>
      <p><code>DEFLATE</code> <a href="../filter.html">필터</a>가
      압축을 한다. 다음 지시어는 지시어가 있는 위치의 문서를
      압축한다:</p>

      <div class="example"><p><code>
        SetOutputFilter DEFLATE
      </code></p></div>

      <p>모든 내용을 압축하면 처리하지 못하는 브라우저가 있기때문에
      html 파일만을 압축하기위해 (아래 참고)
      <code>gzip-only-text/html</code>을 <code>1</code>로 설정할지도
      모른다. 이를 <em><code>1</code>이 아닌 값으로</em> 설정하면
      무시한다.</p>
      
      <p>보통 특별한 MIME type만 압축하려면 <code class="directive"><a href="../mod/core.html#addoutputfilterbytype">AddOutputFilterByType</a></code> 지시어를 사용한다.
      다음 설정은 html 파일만을 압축한다:</p>

      <div class="example"><p><code>
        &lt;Directory "/your-server-root/manual"&gt;<br />
        <span class="indent">
          AddOutputFilterByType DEFLATE text/html<br />
        </span>
        &lt;/Directory&gt;
      </code></p></div>

      <p>압축한 파일을 처리하지 못하는 브라우저에게는 압축하지않고
      보내길위해 <code class="directive"><a href="../mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code> 지시어에 <code>no-gzip</code>을
      설정한다. 최적의 결과를 얻기위해 <code>no-gzip</code>과
      <code>gzip-only-text/html</code>을 같이 사용할 수 있다.
      이 경우 전자가 후자를 무시한다. 위 절의 <a href="#recommended">설정 예제</a> 일부를 살펴보자:</p>

      <div class="example"><p><code>
        BrowserMatch ^Mozilla/4         gzip-only-text/html<br />
        BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
        BrowserMatch \bMSIE             !no-gzip !gzip-only-text/html
      </code></p></div>

      <p>먼저 <code>User-Agent</code> 문자열을 보고 Netscape
      Navigator 버전 4.x인지 검사한다. 이 버전은 <code>text/html</code>이
      아닌 type의 압축을 처리하지 못한다. 버전 4.06, 4.07, 4.08은
      html 파일 압축을 처리하는대도 문제가 있다. 그래서 우리는
      이 경우 deflate 필터를 완전히 사용하지않는다.</p>

      <p>세번째 <code class="directive"><a href="../mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code>
      지시어는 Microsoft Internet Explorer가 자신을 "Mozilla/4"로
      알리지만 압축된 요청을 처리할 수 있기때문에 user agent
      추측을 수정한다. <code>User-Agent</code> 헤더에서 "MSIE"
      (<code>\b</code>는 "단어 경계"를 뜻한다) 문자열을 발견하면
      앞에서 설정한 제약을 푼다.</p>

      <div class="note"><h3>주의</h3>
        <code>DEFLATE</code> 필터는 항상 PHP나 SSI와 같은 RESOURCE
        필터 뒤에 들어간다. 또, 내부 하위요청(subrequest)에 영향을
        주지 않는다.
      </div>
      <div class="note"><h3>주의</h3>
        <code class="directive"><a href="../mod/core.html#setenv">SetEnv</a></code>로
        <code>force-gzip</code> 환경변수를 설정하면 브라우저의
        accept-encoding 설정을 무시하고 압축된 결과를 보낸다.
      </div>

    
    <h3><a name="inflate" id="inflate">출력 압축풀기</a></h3>
      <p><code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> 모듈은 gzip으로 압축된
      응답 내용을 푸는 필터도 제공한다. 이 기능을 사용하려면
      다음과 같이 <code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code>나 <code class="directive"><a href="../mod/mod_mime.html#addoutputfilter">AddOutputFilter</a></code>를 사용하여
      출력필터순서에 <code>INFLATE</code> 필터를 추가한다.</p>

      <div class="example"><p><code>
        &lt;Location /dav-area&gt;<br />
        <span class="indent">
          ProxyPass http://example.com/<br />
          SetOutputFilter INFLATE<br />
        </span>
        &lt;/Location&gt;
      </code></p></div>

      <p>이 예제는 example.com이 보낸 gzip으로 압축된 결과의
      압축을 풀어서, 다른 필터가 더 처리할 수 있도록 한다.
      </p>

    
    <h3><a name="input" id="input">입력 압축풀기</a></h3>
      <p><code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> 모듈은 gzip으로 압축된 요청
      내용을 푸는 필터도 제공한다. 이 기능을 사용하려면 다음과
      같이 <code class="directive"><a href="../mod/core.html#setinputfilter">SetInputFilter</a></code>나
      <code class="directive"><a href="../mod/mod_mime.html#addinputfilter">AddInputFilter</a></code>를
      사용하여 입력필터순서에 <code>DEFLATE</code> 필터를
      추가한다.</p>

      <div class="example"><p><code>
        &lt;Location /dav-area&gt;<br />
        <span class="indent">
          SetInputFilter DEFLATE<br />
        </span>
        &lt;/Location&gt;
      </code></p></div>
      
      <p>요청에 <code>Content-Encoding: gzip</code> 헤더가 있다면
      자동으로 압축된 내용을 푼다. gzip 요청을 할 수 있는
      브라우저는 드물다. 그러나 어떤 <a href="http://www.webdav.org">WebDAV</a> 클라이언트와 같은
      특별한 프로그램은 요청 압축을 지원한다.</p>

      <div class="warning"><h3>Content-Length에 대한 주의</h3>
        <p>요청 내용을 직접 살펴본다면, <em><code>Content-Length</code>
        헤더를 믿지마라!</em> Content-Length 헤더는 클라이언트가
        보낸 내용의 길이이지, 압축을 푼 결과의 바이트수가
        <em>아니다</em>.</p>
      </div>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="proxies" id="proxies">프록시 서버 다루기</a></h2>

    <p><code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> 모듈은 프록시가 자신이 캐쉬한
    응답을 적절한 <code>Accept-Encoding</code> 요청 헤더를 보낸
    클라이언트에게만 보내도록 <code>Vary:
    Accept-Encoding</code> HTTP 응답 헤더를 추가한다. 그래서
    압축된 내용을 이해할 수 없는 클라이언트에 압축된 내용을
    보내지않도록 한다.</p>

    <p>예를 들어, <code>User-Agent</code> 헤더 등에 따라 특별히
    필터 적용을 취소한다면, 프록시에게 이러한 제한을 알려주기위해
    직접 <code>Vary</code> 헤더에 추가해야 한다. 예를 들어,
    설정이 <code>User-Agent</code>에 따라 <code>DEFLATE</code>
    필터를 추가한다면 다음을 사용한다:</p>

    <div class="example"><p><code>
      Header append Vary User-Agent
    </code></p></div>
    
    <p>요청 헤더외의 다른 정보에 (<em>예를 들어</em>, HTTP 버전)
    따라 압축 여부가 결정된다면, <code>Vary</code> 헤더값을
    <code>*</code>로 설정해야 한다. 그러면 표준을 따르는 프록시는
    캐쉬를 하지 않게 된다.</p>

    <div class="example"><h3>예제</h3><p><code>
      Header set Vary *
    </code></p></div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateBufferSize" id="DeflateBufferSize">DeflateBufferSize</a> <a name="deflatebuffersize" id="deflatebuffersize">지시어</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">설명:</a></th><td>zlib이 한번에 압축할 크기</td></tr>
<tr><th><a href="directive-dict.html#Syntax">문법:</a></th><td><code>DeflateBufferSize <var>value</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">기본값:</a></th><td><code>DeflateBufferSize 8096</code></td></tr>
<tr><th><a href="directive-dict.html#Context">사용장소:</a></th><td>주서버설정, 가상호스트</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_deflate</td></tr>
</table>
    <p><code class="directive">DeflateBufferSize</code> 지시어는 zlib이
    한번에 압축할 바이트수를 지정한다.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateCompressionLevel" id="DeflateCompressionLevel">DeflateCompressionLevel</a> <a name="deflatecompressionlevel" id="deflatecompressionlevel">지시어</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">설명:</a></th><td>출력을 어느정도 압축하는가</td></tr>
<tr><th><a href="directive-dict.html#Syntax">문법:</a></th><td><code>DeflateCompressionLevel <var>value</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">기본값:</a></th><td><code>Zlib's default</code></td></tr>
<tr><th><a href="directive-dict.html#Context">사용장소:</a></th><td>주서버설정, 가상호스트</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_deflate</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">지원:</a></th><td>아파치 2.0.45 부터</td></tr>
</table>
    <p><code class="directive">DeflateCompressionLevel</code> 지시어는
        사용할 압축수준을 선택한다. 값이 클수록 압축률이 증가하지만,
        CPU를 더 많이 사용한다.</p>
    <p>(가장 덜 압축) 1과 (가장 많이 압축) 9 사이의 값을 지정한다.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateFilterNote" id="DeflateFilterNote">DeflateFilterNote</a> <a name="deflatefilternote" id="deflatefilternote">지시어</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">설명:</a></th><td>압축률을 로그에 기록한다</td></tr>
<tr><th><a href="directive-dict.html#Syntax">문법:</a></th><td><code>DeflateFilterNote [<var>type</var>] <var>notename</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">사용장소:</a></th><td>주서버설정, 가상호스트</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_deflate</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">지원:</a></th><td><var>type</var>은 아파치 2.0.4 부터</td></tr>
</table>
    <p><code class="directive">DeflateFilterNote</code> 지시어는 요청의
    압축률을 로그에 기록하는 기호를 지정한다. 기호 이름은 지시어로
    지정한 값이다. 통계를 위해 <a href="../logs.html#accesslog">접근
    로그</a>에서 기호를 사용할 수 있다.</p>

    <div class="example"><h3>예제</h3><p><code>
      DeflateFilterNote ratio<br />
      <br />
      LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate<br />
      CustomLog logs/deflate_log deflate
    </code></p></div>

    <p>로그에서 더 정확한 값을 추출하려면 <var>type</var> 아규먼트로
    기록할 자료를 선택한다. <var>type</var>는 다음중 하나이다:</p>

    <dl>
      <dt><code>Input</code></dt>
      <dd>필터 입력스트림의 바이트수를 저장한다.</dd>

      <dt><code>Output</code></dt>
      <dd>필터 출력스트림의 바이트수를 저장한다..</dd>

      <dt><code>Ratio</code></dt>
      <dd>압축률을 (<code>output/input * 100</code>) 저장한다.
       <var>type</var> 아규먼트를 생략하면 사용하는 기본값이다.</dd>
    </dl>

    <p>그래서 이렇게 로그에 기록할 수 있다:</p>

    <div class="example"><h3>정밀한 로그</h3><p><code>
      DeflateFilterNote Input instream<br />
      DeflateFilterNote Output outstream<br />
      DeflateFilterNote Ratio ratio<br />
      <br />
      LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate<br />
      CustomLog logs/deflate_log deflate
    </code></p></div>

<h3>참고</h3>
<ul>
<li><code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateMemLevel" id="DeflateMemLevel">DeflateMemLevel</a> <a name="deflatememlevel" id="deflatememlevel">지시어</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">설명:</a></th><td>zlib이 압축할때 사용하는 메모리량</td></tr>
<tr><th><a href="directive-dict.html#Syntax">문법:</a></th><td><code>DeflateMemLevel <var>value</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">기본값:</a></th><td><code>DeflateMemLevel 9</code></td></tr>
<tr><th><a href="directive-dict.html#Context">사용장소:</a></th><td>주서버설정, 가상호스트</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_deflate</td></tr>
</table>
    <p><code class="directive">DeflateMemLevel</code> 지시어는 zlib이
    압축할때 얼마만큼 메모리를 사용할지 결정한다. (1과 9 사이의
    값)</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateWindowSize" id="DeflateWindowSize">DeflateWindowSize</a> <a name="deflatewindowsize" id="deflatewindowsize">지시어</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">설명:</a></th><td>Zlib 압축 window size</td></tr>
<tr><th><a href="directive-dict.html#Syntax">문법:</a></th><td><code>DeflateWindowSize <var>value</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">기본값:</a></th><td><code>DeflateWindowSize 15</code></td></tr>
<tr><th><a href="directive-dict.html#Context">사용장소:</a></th><td>주서버설정, 가상호스트</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_deflate</td></tr>
</table>
    <p><code class="directive">DeflateWindowSize</code> 지시어는 zlib
    압축 window size를 (1과 15 사이의 값) 지정한다. 일반적으로
    window size가 클수록 압축률이 증가한다.</p>

</div>
</div>
<div class="bottomlang">
<p><span>가능한 언어: </span><a href="../en/mod/mod_deflate.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../ja/mod/mod_deflate.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_deflate.html" title="Korean">&nbsp;ko&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2006 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>