Apache 모듈 · 9 min read · Sep 14, 2025
mod_gzip - 압축된 콘텐츠 제공하기 - Apache 웹서버 - 페이지 6
저자: Michael Schröpl
요청된 기능의 정확한 양은 mod_gzip 모듈 통합으로 사용할 수 있는 추가 Apache 구성 지시어에 의해 설명되어야 합니다.
이 지시어의 효과에 대한 완전한 문서는 현재 사용할 수 없습니다. 일반적으로 다음과 같이 가정하십시오.
- 거의 모든 것이 모든 환경에서 사용될 수 있습니다. 즉, - 전체 서버 범위에서,
- 별도의 가상 호스트에서,
- 디렉토리 또는 심지어
- .htaccess 파일에서
- 기본적으로 Apache의 표준 덮어쓰기 절차가 적용됩니다 - 압축할 콘텐츠를 선택하는 지시어를 제외하고, 이 경우는 조금 더 복잡해집니다.
아래에 설명된 구성은 정말로 자신의 구성에 맹목적으로 복사하기 위한 것이 아닙니다 - 그 의도는 제공되는 옵션의 양에 대한 느낌을 주는 것입니다. 그리고 많은 옵션이 있습니다 - 적어도 ‘압축된 출력 데이터를 얻고 싶을 때’는 그렇습니다…
| 로딩 | 책임 | 사전 압축 | 관료주의 | 데이터 관리 | 파일 크기 | 요구 사항 | 필터 | 전송 인코딩 | 로깅 | 프록시 |
#######################################
### Apache 구성 지시어 ###
### mod_gzip 1.3.26.1a ###
#######################################
##########################
### 모듈 로딩 ###
##########################
# ---------------------------------------------------------------------
# DLL 로드 / Win32:
# LoadModule gzip_module modules/ApacheModuleGzip.dll
#
# DSO 로드 / UNIX:
# LoadModule gzip_module modules/mod_gzip.so
#
# (모듈이 정적으로 컴파일된 경우 두 가지 모두 해당되지 않음;# 정확한 파일 이름은 이 모듈에 사용된 정확한 컴파일 방법에 따라 다를 수 있습니다
# )# ---------------------------------------------------------------------
########################
### 책임 ###
########################
# ---------------------------------------------------------------------
# mod_gzip를 사용할 것인가?
mod_gzip_on Yes
# (이 지시어를 사용하여 중앙 서버 구성 내에서 mod_gzip을 활성화할 수 있지만
# 일부 디렉토리 또는 가상 호스트 내에서는 비활성화할 수 있습니다.)
# ---------------------------------------------------------------------
######################################
### 정적으로 사전 압축된 파일 ###
######################################
# ---------------------------------------------------------------------
# mod_gzip이 '부분 콘텐츠 협상'을 수행하도록 하시겠습니까?
mod_gzip_can_negotiate Yes
# (이 옵션이 활성화되면 정적 파일이 압축된 상태로 제공될 때
# mod_gzip은 정의된 추가 확장자를 가진 이 파일의 정적 사전 압축 버전을 찾습니다 - 다음
# 지시어를 참조하십시오 - 이 파일은 우선적으로 제공됩니다. 이렇게 하면
# 동일한 정적 파일을 반복적으로 압축하는 것을 피하고 CPU 시간을 절약할 수 있습니다.
# 이 파일의 동적 캐싱은 제공되지 않으며, 현재 사용자가
# 사전 압축된 파일의 내용을 생성하고 업데이트할 책임이 있습니다.# 버전 1.3.19.2a부터 mod_gzip은
# 정적으로 사전 압축된 파일이 압축되지 않은 원본보다 오래된 경우를 자동으로 인식하며,
# 이 경우 원본 파일의 내용을 압축되지 않은 형태로 제공할 것입니다 -
# 올바른 데이터를 제공하는 것이 오래된 데이터를 제공하는 것보다 더 중요하기 때문입니다...)# ---------------------------------------------------------------------# 정적으로 사전 압축된 파일의 확장자 (접미사)
mod_gzip_static_suffix .gz
AddEncoding gzip .gz
# (효과: 이전 지시어를 참조하십시오; 이 문자열은
# 원본 파일의 이름에 추가됩니다.
# 이 확장자에 대해 'gzip' 인코딩을 구성해야 합니다.
# mod_gzip은 콘텐츠 자체를 제공하지 않고, 단순히 이 URL로의 Apache 내부 리디렉션을 생성합니다.
# 따라서 나머지 Apache 구성은 'Content-Encoding'
# 헤더를 적절하게 설정하는 책임이 있습니다...
# 버전 1.3.19.2a 이전에는 이 값이 구성할 수 없었습니다.)# ---------------------------------------------------------------------# 정적으로 사전 압축된 파일의 자동 업데이트
mod_gzip_update_static No
# (이 값을 'Yes'로 설정하면 이 지시어(버전 1.3.26.1a에서 새로 추가됨)는
# mod_gzip이 요청 중에 오래된 정적 사전 압축 파일의 버전을 자동으로 업데이트하도록 합니다.
# 즉, 원래 요청된 파일을 압축하고 *사전 압축된 변형*
# 파일을 덮어쓰게 됩니다!
# 이러한 자동 업데이트가 발생할 때마다 mod_gzip은
# Apache error_log에 'notice' 심각도의 메시지를 기록합니다.
# 이 과정에서 mod_gzip은 원본 파일의 내용을 직접 읽습니다.
# 따라서 이 콘텐츠는 요청 중에 다른 Apache 모듈에 의해 해석될 수 없습니다.
# 이는 아마도 *원하지 않는* 결과일 수 있습니다 - 대부분의 사용자가 원하는 결과일 것입니다.
# 왜냐하면 이렇게 하면 *빠르게* 작동하기 때문입니다.
# 이 구성을 신중하게 사용하고, URL 트리 내의 귀중한 파일이
# 덮어쓰이지 않도록 주의하십시오.
# 이는 대량 호스팅 서버에서 사용하기 위한 기능이 아닙니다.
# 특히 mod_gzip이 그곳에서 접근 제어 문제를 경험할 수 있기 때문입니다 -
# Apache 프로세스가 실행되는 사용자 ID는 모든 사용자의 사전 압축 파일에 대한 쓰기 접근 권한이 필요합니다.
# 이는 자동으로 보장되지 않을 수 있습니다.)
# [이 상황에서 mod_gzip 오류 처리??? 무엇이 제공될 것인가?]# ---------------------------------------------------------------------
###################
### 관료주의 ###
###################
# ---------------------------------------------------------------------
# mod_gzip의 상태 표시
mod_gzip_command_version '/mod_gzip_status'
# (mod_gzip의 상태를 표시하는 URL을 정의합니다;
# 각 설치에 대해 개별적으로 지정할 수 있으며,
# 개인 정보 보호를 위해 섹션을 통해 접근을 보호할 수 있습니다.)
# ---------------------------------------------------------------------
# 상태 표시의 형식은 다음과 같습니다:
# mod_gzip이 사용 가능합니다...
# mod_gzip_version = 1.3.26.1a
# mod_gzip_on = Yes/No
# 따라서 다음과 같은 정보를 제공합니다.
# - mod_gzip이 서버에 설치되어 있고 올바르게 작동하고 있는지,
# - 설치된 버전,
# - 이 위치에 대해 mod_gzip이 '활성'으로 설정되었는지
# (-> mod_gzip_on)
# ---------------------------------------------------------------------
#######################
### 데이터 관리 ###
#######################
# ---------------------------------------------------------------------
# 임시 파일 및 압축 캐시를 위한 작업 디렉토리
# 지정되지 않은 경우 다음 기본값이 사용됩니다:
# [Win32=c:\temp], [UNIX=/tmp]
# mod_gzip_temp_dir /tmp
# (이 디렉토리는 이미 존재해야 하며,
# Apache 서버를 실행하는 데 사용되는 사용자 ID는 이
# 디렉토리에 대한 읽기 및 쓰기 접근 권한이 있어야 합니다.
# 다른 Apache 지시어와 달리 절대 경로 이름을 지정해야 합니다;
# 상대 값은 ServerRoot에 대해 상대적으로 해석되지 않습니다.
# 이 경로 이름은 '/'로 종료되지 않아야 합니다.
# 최대 성능을 위해 이 디렉토리는 RAM 디스크에 위치해야 하며,
# 파일 시스템이 이미 효율적으로 캐시되지 않는 경우에 해당합니다.
# ---------------------------------------------------------------------
# 임시 작업 파일 저장 [예, 아니오]
mod_gzip_keep_workfiles No
# (HTTP 요청당 하나의 파일 - 디버깅 목적으로만 '예'로 설정하십시오!)
# ---------------------------------------------------------------------
##################
### 파일 크기 ###
##################
# ---------------------------------------------------------------------
# 압축할 파일의 최소 크기 (바이트 단위)
mod_gzip_minimum_file_size 500
# (매우 작은 파일의 경우 압축은 작은 절대 이득만을 생성합니다.
# [여전히 콘텐츠의 약 50%를 절약하겠지만, 추가적인
# 500 바이트의 HTTP 및 TCP 헤더는 항상 압축되지 않은 상태로 남습니다],
# 그러나 클라이언트와 서버 모두에 CPU 부하를 생성합니다.
# mod_gzip은 이 지시어에 대해 300 바이트보다 작은 값을 자동으로
# 정확히 이 값 300으로 설정합니다.)
# ---------------------------------------------------------------------
# 압축할 파일의 최대 크기 (바이트 단위)
mod_gzip_maximum_file_size 500000
# (매우 큰 파일의 경우 압축이 상당히 오랜 시간이 걸릴 수 있으며,
# 따라서 전송 시작이 지연될 수 있습니다.
# 또한 이 시점에서의 제한은 서버가 CGI 스크립트 내의
# 무한 루프의 경우 무제한 크기의 출력을 생성하는 것을 방지합니다.
# 또는 스트리밍 데이터를 압축하려고 시도하는 경우,
# 이는 그렇지 않으면 임시 파일을 생성하고
# 전체 하드 디스크를 채울 수 있습니다.
# 반면에, 압축은 큰 파일에 대해 훨씬 더 인식 가능한
# 주관적 효과를 가질 것입니다... 따라서 이 값을
# 요구 사항에 따라 미세 조정해야 합니다.)
# ---------------------------------------------------------------------
# 메모리에서 압축할 파일의 최대 크기 (바이트 단위)
mod_gzip_maximum_inmem_size 60000
# (더 큰 파일은 임시 파일 디렉토리에 압축됩니다;
# 이 값을 서버의 사용 가능한 주 메모리에 맞게 조정하십시오.
# mod_gzip 1.3.19.x에서는 더 큰 값이 자동으로
# 60000으로 제한됩니다. 일부 운영 체제는
# 한 번에 64kb 이상의 메모리를 할당하는 데 문제가 있다고 합니다.
# ---------------------------------------------------------------------
####################
### 요구 사항 ###
####################
# (이 지시어를 사용할 때의 문제에 대한 캐싱 장에 대한 장을 참조하십시오.)
# ---------------------------------------------------------------------
# 클라이언트의 필수 HTTP 버전
# 가능한 값: 1000 = HTTP/1.0, 1001 = HTTP/1.1, ...
# 이 지시어는 Apache가 내부적으로 사용하는 것과 동일한 숫자 프로토콜 값을 사용합니다.
mod_gzip_min_http 1000
# (이 지시어를 사용하여 오래된 브라우저, 검색 엔진 등을
# 압축 절차에서 제외할 수 있습니다: 사용자 에이전트가
# 여기 지정된 HTTP 수준을 이해할 수 있다고 선언하지 않으면,
# 압축되지 않은 데이터만 제공됩니다 -
# 그 외에 무엇을 주장하든 상관없이. '1001'의 값은 특히
# Netscape 4.x 및 많은 프록시 서버를 제외합니다.)
# --------------------------------------------------------------------- # 처리할 HTTP 메서드
# 가능한 값: 'GET', 'POST' 또는 두 값의 목록.
mod_gzip_handle_methods GET POST
# (이 지시어를 사용하여 POST 요청을
# 압축 절차에서 특별히 제외할 수 있습니다.
# 이전 mod_gzip 버전에서 이러한 요청을 처리하는 데
# 문제가 발생할 수 있는 경우가 알려져 있습니다.
# 버전 1.3.19.2a 이전에는 이 값이 구성할 수 없었습니다.)# ---------------------------------------------------------------------
###############
### 필터 ###
###############
# ---------------------------------------------------------------------
# 어떤 파일을 압축할 것인가?
#
# 두 단계에서의 처리 순서는 중요하지 않지만, 요청 콘텐츠의 압축을 트리거하려면
# 이 요청이 a) *각 단계에서 하나 이상의 포함 규칙과 일치해야 하며*
# b) *어떤 단계에서도 제외 규칙과 일치하지 않아야 합니다.*
# 이러한 규칙은 최소한이 아니며, 단지 예시로 제공됩니다.
## 이 섹션의 지시어의 모든 매개변수 값은
# 정규 표현식으로 평가되며, *대소문자를 구분하지 않습니다.*# ---------------------------------------------------------------------
# 1단계: (reqheader, uri, file, handler)
# ========================================
# NO: gzipped 콘텐츠를 요청하지만
# 이를 올바르게 처리할 수 없는 특별한 손상된 브라우저
mod_gzip_item_exclude reqheader "User-agent: Mozilla/4.0[678]"
# 버전 1.3.19.2a부터는 *사용자 에이전트에 대한 필터 사용을 권장하지 않습니다*
# *HTTP 헤더 'Vary: User-Agent'가 생성되어,
# 프록시 서버의 작업을 더 어렵게 만들기 때문입니다.#
# JA: HTML 문서
mod_gzip_item_include file \.html$
#
# NO: 포함 파일 / JavaScript 및 CSS (Netscape4 버그로 인해)
mod_gzip_item_exclude file \.js$
mod_gzip_item_exclude file \.css$
#
# YES: CGI 스크립트
mod_gzip_item_include file \.pl$
mod_gzip_item_include handler ^cgi-script$
#
# 2단계: (mime, rspheader)
# ===========================
# YES: 일반 HTML 파일, 일반 텍스트 파일, Apache 디렉토리 목록
mod_gzip_item_include mime ^text/html$
mod_gzip_item_include mime ^text/plain$
mod_gzip_item_include mime ^httpd/unix-directory$
#
# NO: 이미지 (GIF 등, 거의 절약되지 않음)
mod_gzip_item_exclude mime ^image/
# ---------------------------------------------------------------------
# 사실 mod_gzip은 첫 번째 피연산자의 첫 4자를 확인합니다.
# (uri의 경우 첫 2자만 확인하여 url과 같은 값을 허용합니다.)
# ---------------------------------------------------------------------
# mod_gzip_item 규칙(include 및 exclude)의 테이블은
# 256개 이상의 항목을 포함할 수 없습니다; 이 숫자가 초과되면 mod_gzip은
# "mod_gzip: ERROR: Item index is full"라는 메시지를 출력하고
# Apache 서버에 구성 오류를 보고합니다.
# ---------------------------------------------------------------------
# 여기 설명된 지시어 값은 압축을 위해 선택된 요청을
# *가장 정확하게* 설명하기 위한 것입니다.
# 특히 mime 규칙에 대해 HTTP
# 헤더 'Content-Type' (mod_gzip이 이 규칙을 확인할 때 사용됨)은
# 경우에 따라 MIME 유형뿐만 아니라
# 문자 집합 설명(charset)을 포함할 수 있습니다.
# 이 경우 처리할 요청에 대해
# 해당 값의 끝에 있는 '$' 문자를 제거해야 하며,
# 이제 이 값의 접두사만 일치 여부를 테스트합니다.
# ---------------------------------------------------------------------
##########################
### 전송 인코딩 ###
##########################
# ---------------------------------------------------------------------
# mod_gzip이 HTTP 헤더를 제거하도록 허용합니다.
# 'Transfer-encoding: chunked'
# 청크를 하나의 (압축 가능한) 패킷으로 결합합니다.
mod_gzip_dechunk Yes
# (이는 CGI 및 SSI 페이지를 포함하여 여러 유형의 동적으로 생성된
# 콘텐츠를 처리하는 데 필요합니다.
# ---------------------------------------------------------------------
###############
### 로깅 ###
###############
# ---------------------------------------------------------------------
# 압축 효과를 테스트하기 위한 확장 로그 형식
LogFormat "%h %l %u %t \"%V %r\" %
# ---------------------------------------------------------------------
# 추가 로그 파일 생성
CustomLog logs/mod_gzip.log common_with_mod_gzip_info2
# (정상 로그 파일 형식을 재정의할 수 있지만,
# 표준 웹 분석 도구에 의해 평가될 수 있도록 형식을 표준 호환으로 유지하는 것이 좋습니다.
# 따라서 우리는 또 다른 로그 파일을 생성합니다.)
# ---------------------------------------------------------------------
# Apache access_log 내에서 제공된 파일의 볼륨 계산:
# HTTP 헤더 크기(바이트 단위)를 총 출력 크기의 일부로 계산합니다.
mod_gzip_add_header_count Yes
# (이는 순수 문서 콘텐츠보다 더 많지만,
# HTTP 요청의 총 출력 트래픽을 더 현실적으로 설명할 것입니다.)
# ---------------------------------------------------------------------
###############
### 프록시 ###
###############
# ---------------------------------------------------------------------
# 'Vary' HTTP 헤더 전송
mod_gzip_send_vary On
# (이 지시어에 대한 캐싱 장을 참조하십시오.)
# *이것을 변경하지 마십시오. 당신이 무엇을 하고 있는지 확실히 알고 있지 않는 한!*
# ---------------------------------------------------------------------
모듈 로딩 순서
이 모듈을 동적으로 추가할 때 mod_gzip은 여러 LoadModule 지시어 중 마지막으로 지정되어야 합니다.
이는 Apache가 LoadModule 지시어에서 스택을 내부적으로 구성하고 나중에 이를 역순서로 평가하기 때문입니다.
mod_gzip은 Apache의 type_checker 루틴에 후킹됩니다. 그러나 요청 처리를 담당한다고 선언한 모든 모듈 중 첫 번째만이 Apache에 의해 실제로 활성화됩니다 (예: ColdFusion 및 SSL이 시도할 것입니다). 따라서 mod_gzip은 그 출력이 자신으로 리디렉션되고 후처리되기를 원하는 모듈보다 먼저 활성화되어야 합니다. 이러한 모듈이 동일한 type_checker 인터페이스를 사용하려고 하는 한… 그렇지 않으면 이 지시어의 순서와 독립적으로 작동할 수 있습니다.
Apache의 시작 메시지(예: Apache error log 내에서 찾을 수 있음) 동안 개별 버전 사양이 있는 모듈은 모듈 체인 내에서 나타나는 순서대로 나열될 수 있습니다. 이 경우 mod_gzip은 압축할 의도된 다른 모듈보다 먼저 나열되어야 합니다.
이 문서의 원본 위치: http://www.schroepl.net/projekte/mod_gzip/config.htm
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.