기술 가이드

Lighttpd 1.4 (Debian Etch)에서 mod_deflate로 트래픽 절약하는 방법

5 min read 서버/네트워크 업데이트됨 21 Oct 2025
Lighttpd 1.4(Etch)에서 mod_deflate로 트래픽 절감
Lighttpd 1.4(Etch)에서 mod_deflate로 트래픽 절감

중요: 이 튜토리얼은 데비안 Etch(예: lighttpd 1.4.13)를 기준으로 작성되었습니다. 최신 배포판이나 lighttpd 1.5 이상에서는 mod_deflate가 기본 포함되어 있을 수 있으니 먼저 버전을 확인하세요.

목적 및 관련 검색 의도

  • 주된 목적: lighttpd 1.4에서 mod_deflate를 적용해 서버 트래픽을 줄이는 방법 안내
  • 관련 검색 변형: lighttpd mod_deflate 설치, lighttpd gzip 설정, Debian Etch lighttpd 압축, HTTP 응답 압축 설정, mod_compress 대 mod_deflate

1 개요

이 문서는 Debian Etch에 포함된 lighttpd 1.4 계열(예: 1.4.13)을 대상으로 mod_deflate 패치를 적용해 빌드하고, 설정(Configuration) 및 검증(Verification)까지 완료하는 절차를 설명합니다. mod_deflate는 정적 파일뿐 아니라 PHP 등 동적 컨텐츠도 압축할 수 있다는 점에서 mod_compress보다 장점이 있습니다. 압축은 서버 CPU 부하를 약간 증가시키지만 대역폭 절감과 클라이언트 응답 시간 단축으로 대부분의 환경에서 이득이 큽니다.

용어 정의(한 줄):

  • mod_deflate: HTTP 응답 바디를 gzip/bzip2 형식으로 압축하여 전송하는 lighttpd 플러그인.
  • mod_compress: 정적 파일만 압축 가능한 이전 플러그인.

2 사전 확인

  1. 이미 lighttpd가 설치되어 있는지와 버전을 확인합니다:
lighttpd -V

출력 예시는 다음과 같아야 하며, 버전이 1.4.13인지 확인하십시오:

server1:~# lighttpd -V
lighttpd-1.4.13 (ssl) - a light and fast webserver
Build-Date: Jun  1 2007 18:19:33

Event Handlers:

        + select (generic)
        + poll (Unix)
        + rt-signals (Linux 2.4+)
        + epoll (Linux 2.6)
        - /dev/poll (Solaris)
        - kqueue (FreeBSD)

Network handler:

        + sendfile

Features:

        + IPv6 support
        + zlib support
        + bzip2 support
        + crypt support
        + SSL Support
        + PCRE support
        + mySQL support
        + LDAP support
        + memcached support
        - FAM support
        + LUA support
        + xml support
        + SQLite support
        + GDBM support

server1:~#

참고: lighttpd 1.5 이상에서는 mod_deflate가 기본 포함되어 있으므로 별도 패치가 불필요합니다.

3 소스 패치 및 빌드 절차

다음 단계는 소스 패치와 .deb 패키지 재빌드입니다. 시스템에 따라 루트 권한이 필요합니다.

  1. 빌드에 필요한 도구 설치:
apt-get install build-essential
  1. 소스 디렉터리로 이동해 데비안 소스 패키지 가져오기:
cd /usr/src
apt-get source lighttpd
  1. 디렉터리 목록 확인(예: lighttpd-1.4.13):
ls -l
  1. mod_deflate 패치 다운로드 및 적용:
wget http://trac.lighttpd.net/trac/attachment/wiki/Mod_Deflate/lighttpd-1.4.13.mod_deflate.jz.patch?format=raw
mv lighttpd-1.4.13.mod_deflate.jz.patch?format=raw lighttpd-1.4.13.mod_deflate.jz.patch
cd lighttpd-1.4.13
patch -p1 < ../lighttpd-1.4.13.mod_deflate.jz.patch

패치 성공 시 패치 로그(파일명이 나열됨)를 확인하십시오.

  1. 패키지 빌드 시 필요한 의존성 설치 및 빌드:

먼저 dpkg-buildpackage를 실행하면 부족한 빌드 의존성이 나옵니다. 예시:

dpkg-buildpackage

부족한 패키지를 아래 예와 같이 설치합니다(환경에 따라 목록이 다를 수 있음):

apt-get install debhelper cdbs libssl-dev zlib1g-dev libbz2-dev libattr1-dev libpcre3-dev libmysqlclient15-dev libldap2-dev libfcgi-dev libgdbm-dev libmemcache-dev liblua5.1-0-dev dpatch patchutils pkg-config uuid-dev libsqlite3-dev libxml2-dev

그 후 다시 패키지 빌드:

dpkg-buildpackage

빌드가 완료되면 /usr/src에 .deb 파일(예: lighttpd_1.4.13-4etch1_i386.deb)이 생성됩니다.

  1. 새 패키지 설치 및 모듈 복사:
dpkg -i lighttpd_1.4.13-4etch1_i386.deb
cp /usr/src/lighttpd-1.4.13/debian/tmp/usr/lib/lighttpd/mod_deflate.so /usr/lib/lighttpd

설치 후 빌드 날짜로 재설치가 제대로 되었는지 확인할 수 있습니다:

lighttpd -V

출력에 bzip2 지원 등이 표시되면 모듈 동작 전제(요구사항)는 충족됩니다.

4 Lighttpd 설정

데비안 Etch의 기본 설정 파일은 /etc/lighttpd/lighttpd.conf 입니다. 다음과 같이 server.modules에 mod_deflate를 추가합니다. (참고: mod_rewrite가 활성화된 경우 mod_deflate는 mod_rewrite 뒤에 위치해야 합니다.)

vi /etc/lighttpd/lighttpd.conf

| [...] server.modules = ( "mod_access", "mod_alias", "mod_accesslog", "mod_fastcgi", # "mod_rewrite", "mod_deflate", # "mod_redirect", # "mod_status", # "mod_evhost", # "mod_compress", # "mod_usertrack", # "mod_rrdtool", # "mod_webdav", # "mod_expire", # "mod_flv_streaming", # "mod_evasive" ) [...] |

같은 파일 끝부분(또는 적절한 위치)에 다음 deflate 설정을 추가합니다:

| [...] deflate.enabled = "enable" deflate.compression-level = 9 deflate.mem-level = 9 deflate.window-size = 15 # deflate.bzip2 only in patch for 1.4.x deflate.bzip2 = "enable" # deflate.allowed_encodings only in 1.5.x #deflate.allowed_encodings = ( "bzip2", "gzip", "deflate" ) deflate.min-compress-size = 200 #deflate.sync-flush = "enable" deflate.output-buffer-size = 4096 deflate.work-block-size = 512 deflate.mimetypes = ("text/html", "text/plain", "text/css", "text/javascript", "text/xml") #deflate.debug = "enable" |

설정 후 lighttpd 재시작:

/etc/init.d/lighttpd restart

blank 페이지가 보일 경우 deflate.output-buffer-size 값을 2048 또는 1024로 낮춰 재시작해 보십시오.

5 동작 검증

압축 동작을 확인하려면 deflate.debug = “enable”을 uncomment하고 lighttpd를 재시작한 후 에러 로그를 모니터링합니다:

tail -f /var/log/lighttpd/error.log

압축이 수행되면 로그에 다음과 유사한 항목이 나타납니다:

2007-08-08 18:40:33: (mod_deflate.c.919) in: 53875 out: 8446
2007-08-08 18:40:33: (mod_deflate.c.1020) finished uri: /info.php , query:

이 예시는 53,875바이트인 info.php가 8,446바이트로 압축되었음을 의미합니다.

6 점검표(롤별)

관리자(시스템·서버 운영자):

  • lighttpd 버전 확인 및 백업
  • 소스 빌드 환경(의존성) 설치
  • .deb 빌드 및 설치 후 서비스 재시작

개발자(웹 개발자):

  • 콘텐츠가 압축과 호환되는지 확인(이미 압축된 바이너리 응답 전송 금지)
  • Content-Type 헤더가 올바른지 확인

QA 엔지니어:

  • 브라우저에서 압축 협상(accept-encoding) 테스트
  • 압축 전/후 응답 무결성 검사

7 문제 해결 및 주의점

  • 일부 오래된 브라우저가 압축을 제대로 처리하지 못할 가능성이 있으나, HTTP 헤더 협상을 통해 서버가 자동으로 압축 전송 여부를 결정하므로 대개 문제가 없습니다.
  • blank 페이지가 발생하면 deflate.output-buffer-size 값을 줄여 테스트하세요.
  • CPU 사용량 증가: 트래픽 절감 효과가 큰 경우가 대부분이지만, CPU 한계가 있는 환경에서는 오프로드 솔루션(리버스 프록시, CDN)을 고려하세요.

8 대안과 비교

  • mod_compress: lighttpd 1.4 기본 플러그인으로 정적 파일만 압축 가능. 동적 파일(예: PHP) 압축이 필요하면 mod_deflate가 유리.
  • nginx(또는 Apache mod_deflate): 최신 웹서버로 전환하면 내장된 gzip/brotli 압축 기능 활용 가능.
  • 리버스 프록시(CDN) 사용: 압축과 캐싱을 외부로 위임하면 서버 부하를 낮출 수 있음.

비교 요약: mod_deflate는 기존 1.4 계열에서 동적 컨텐츠까지 압축하는 실용적인 선택지입니다. 하지만 장기적으로는 최신 경량 웹서버 또는 CDN 도입을 검토하는 것이 좋습니다.

9 테스트 케이스 및 승인 기준

  • 브라우저에서 curl로 Accept-Encoding 헤더를 포함해 요청 시 Content-Encoding이 gzip 또는 bzip2로 전송되는지 확인:
curl -I -H "Accept-Encoding: gzip,deflate" http://yourserver/yourpage.html
  • 압축된 응답을 실제로 풀었을 때(예: gunzip) 원래 파일과 동일한지 검증.
  • deflate.min-compress-size 이하의 작은 파일은 압축되지 않는지 확인.

승인 기준:

  • 최소 3개의 HTML/PHP 페이지가 압축되어 응답 크기가 현저히 감소할 것
  • 압축 유무에 따른 페이지 렌더링 오류 없음
  • 서버 에러 로그에 mod_deflate 관련 치명적 에러 없음

10 팁과 체크리스트(빠른 요약)

  • 먼저 버전 확인: lighttpd -V
  • 필요 패키지 설치: build-essential 및 dpkg-buildpackage 의존성
  • 패치 다운로드 및 적용: patch -p1
  • 빌드: dpkg-buildpackage
  • 설치: dpkg -i …
  • 모듈 복사: cp …/mod_deflate.so /usr/lib/lighttpd
  • 설정: server.modules에 “mod_deflate” 추가 및 deflate.* 옵션 설정
  • 검증: deflate.debug 활성화 후 /var/log/lighttpd/error.log 확인

11 호환성 및 마이그레이션 팁

  • 데비안 Etch(구버전)에서 작업 중이라면 보안 업데이트 및 패키지 지원 기간을 고려하세요. 가능하다면 최신 Debian으로 마이그레이션을 권장합니다.
  • lighttpd 1.5 이상으로 업그레이드하면 mod_deflate가 기본 포함되므로 소스 패치/재빌드가 불필요합니다.
  • Brotli 압축을 사용하려면 서버 소프트웨어가 brotli를 지원하는지 확인하세요(추가 모듈 또는 최신 서버 필요).

12 보안 및 개인정보 주의

압축 자체는 개인정보에 직접 영향을 주지 않지만, 압축된 응답을 통해 전송되는 모든 데이터는 평상시와 동일한 보안(HTTPS, 적절한 헤더) 정책을 따라야 합니다. SSL/TLS를 사용하는 경우 압축 전에 반드시 TLS 레벨에서 적절한 설정을 검토하세요(과거 CRIME 취약점 관련 문맥에서 압축+TLS 조합에 유의 필요).

13 자주 묻는 질문(짧게)

Q: 모든 파일이 압축되나요? A: deflate.mimetypes와 deflate.min-compress-size에 따라 지정된 MIME 타입과 크기 이상의 파일만 압축됩니다.

Q: 모듈이 보이지 않으면? A: lighttpd -V 출력에 mod_deflate 항목이 직접 표시되지 않을 수 있으나, 모듈 파일(mod_deflate.so)이 /usr/lib/lighttpd에 있고 서버 로그에 압축 관련 로그가 있으면 정상 동작합니다.

14 마무리 요약

  • mod_deflate 패치는 lighttpd 1.4에서 동적/정적 콘텐츠 압축을 가능하게 하여 대역폭을 크게 절감합니다.
  • 소스 패치 → 의존성 설치 → dpkg-buildpackage → .deb 설치 → 설정 → 검증 순으로 진행합니다.
  • 문제 발생 시 출력 로그와 설정값(deflate.output-buffer-size 등)을 먼저 확인하세요.

링크

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Debian 11에 Podman 설치 및 사용하기
컨테이너

Debian 11에 Podman 설치 및 사용하기

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정
시스템 관리

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드
그래픽 가이드

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드

Debian Etch에 Dansguardian+Squid(NTLM) 구성
네트워크

Debian Etch에 Dansguardian+Squid(NTLM) 구성

안드로이드 SD카드 설치 오류(Error -18) 완전 해결
안드로이드 오류

안드로이드 SD카드 설치 오류(Error -18) 완전 해결

KNetAttach로 원격 네트워크 폴더 연결하기
네트워킹

KNetAttach로 원격 네트워크 폴더 연결하기