서버 설정 · 3 min read · Sep 25, 2025

Apache2의 mod_deflate로 트래픽 절약하기

이 튜토리얼에서는 Apache2 웹 서버에서 mod_deflate를 설치하고 구성하는 방법을 설명하겠습니다. mod_deflate는 Apache2가 파일을 압축하고 압축된 콘텐츠를 처리할 수 있는 클라이언트(예: 브라우저)에게 전달할 수 있게 해줍니다. 대부분의 최신 브라우저는 이를 지원합니다. mod_deflate를 사용하면 HTML, 텍스트 또는 XML 파일을 원래 크기의 약 20 - 30%로 압축할 수 있어 서버 트래픽을 절약하고 모뎀 사용자들을 더 행복하게 만들 수 있습니다.

파일을 압축하면 서버에 약간의 부하가 증가하지만, 제 경험상 클라이언트의 서버 연결 시간이 크게 줄어들기 때문에 이는 보상됩니다. 예를 들어, 압축되지 않은 HTML 파일을 다운로드하는 데 7초가 필요했던 모뎀 사용자는 이제 압축된 파일을 위해 단 2초만 필요할 수 있습니다.

mod_deflate를 사용하면 압축된 콘텐츠를 처리할 수 없는 오래된 브라우저를 사용하는 사용자를 배제할까 걱정할 필요가 없습니다. 브라우저는 파일이 전송되기 전에 서버와 협상하며, 브라우저가 압축된 콘텐츠를 처리할 수 없는 경우 서버는 파일을 압축되지 않은 상태로 전달합니다.

mod_deflate는 Apache 1.3의 mod_gzip을 Apache2에서 대체했습니다. Apache 1.3에서 압축된 파일을 제공하려면 이 튜토리얼을 참조하세요: mod_gzip - Apache 웹 서버로 압축된 콘텐츠 제공하기

먼저 말씀드리고 싶은 것은 이것이 이러한 시스템을 설정하는 유일한 방법이 아니라는 것입니다. 이 목표를 달성하는 방법은 여러 가지가 있지만, 이것이 제가 선택한 방법입니다. 이것이 여러분에게 작동할 것이라는 보장은 하지 않습니다!

1 mod_deflate 활성화하기

Apache2가 설치되어 있다면, mod_deflate도 이미 시스템에 설치되어 있어야 합니다. 이제 이를 활성화해야 합니다. Debian에서는 다음과 같이 할 수 있습니다:

a2enmod deflate

그런 다음 Apache2를 재시작합니다:

service apache2 restart

다른 배포판에서는 mod_deflate를 활성화하기 위해 Apache2의 구성을 수동으로 편집해야 할 수도 있습니다. LoadModule 섹션에 다음과 같은 줄을 추가해야 할 수 있습니다:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

mod_deflate.so의 경로를 조정하고, 그 후 Apache2를 재시작하세요.

2 mod_deflate 구성하기

파일 압축은 두 가지 방법 중 하나로 구성할 수 있습니다: 확장자를 통한 명시적 제외 또는 MIME 유형을 통한 명시적 포함. mod_deflate를 전체 Apache2 서버에 활성화하거나 특정 가상 사이트에만 활성화할 수 있습니다. 이에 따라 이제 Apache2의 전역 서버 구성 섹션을 열거나 mod_deflate를 활성화하려는 vhost 구성 섹션을 열어야 합니다.

2.1 MIME 유형에 의한 파일의 명시적 포함

HTML, 텍스트 및 XML 파일만 압축하려면 구성에 다음 줄을 추가하세요:

AddOutputFilterByType DEFLATE text/html text/plain text/xml

이것은 제가 사용하는 구성입니다. 이미지나 PDF 파일 또는 이미 압축된 파일(예: zip 파일)을 압축하고 싶지 않기 때문입니다.

2.2 확장자에 의한 파일의 명시적 제외

모든 파일 유형을 압축하고 몇 가지만 제외하려면 구성에 다음과 같은 내용을 추가해야 합니다(2.1 섹션의 줄 대신):

SetOutputFilter DEFLATE  
SetEnvIfNoCase Request_URI \
    \\.(?:gif|jpe?g|png)$ \\  
    no-gzip dont-vary  
SetEnvIfNoCase Request_URI \
    \\.(?:exe|t?gz|zip|bz2|sit|rar)$ \\  
    no-gzip dont-vary  
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary

이렇게 하면 이미지(gif, jpg, png), 이미 압축된 파일(zip 및 tar.gz와 같은) 및 PDF 파일을 제외한 모든 파일이 압축됩니다. 이러한 파일 유형을 압축해도 큰 이득이 없기 때문에 합리적입니다.

2.3 추가 구성 지시문

2.1 또는 2.2 섹션의 구성을 사용하든 관계없이 다음 줄을 구성에 추가해야 합니다:

BrowserMatch ^Mozilla/4 gzip-only-text/html  
BrowserMatch ^Mozilla/4\.0[678] no-gzip  
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

이 줄들은 HTML 문서 외의 파일 압축을 지원하지 않는 일부 오래된 브라우저를 위한 것입니다.

구성이 이제 완료되었으며, 이제 Apache2를 재시작해야 합니다. Debian에서는 다음과 같이 합니다:

service apache2 restart

추가 구성 지시문에 대해 알아보려면 Apache Module mod_deflate를 참조하세요.

3 테스트

압축을 테스트하기 위해 mod_deflate 구성에 전달된 파일의 압축 비율을 기록하는 몇 가지 지시문을 추가합니다. mod_deflate 구성을 열고 다음 줄을 추가하세요:

DeflateFilterNote Input input_info  
DeflateFilterNote Output output_info  
DeflateFilterNote Ratio ratio_info  
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate  
CustomLog /var/log/apache2/deflate_log deflate

/var/log/apache2를 Apache2의 로그 디렉토리로 교체하세요. 이 디렉토리는 /var/log/httpd, /var/log/httpd2 등일 수 있습니다.

그런 다음 Apache2를 재시작합니다. Debian에서는 다음과 같이 합니다:

service apache2 restart

이제 파일이 요청될 때마다 /var/log/apache2/deflate_log(또는 변경한 파일)에 기록됩니다. 일반적인 로그 줄은 다음과 같습니다:

"GET /info.php HTTP/1.1" 7621/45430 (16%)

info.php 파일이 요청되고 전달된 것을 볼 수 있습니다. 원래 크기는 45430 바이트였고, 7621 바이트로 압축되었으며 원래 크기의 16%입니다! 이는 훌륭한 결과이며, 웹사이트가 대부분 HTML, 텍스트 및 XML 파일로 구성되어 있다면 mod_deflate는 많은 트래픽을 절약할 것이며, 저대역폭 연결을 사용하는 사용자에게는 사이트가 훨씬 더 빠르게 로드될 것입니다.

테스트 후 더 이상 로깅이 필요하지 않다면 3 섹션의 변경 사항을 되돌리고 Apache2를 재시작할 수 있습니다.

4 링크

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.