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 규칙(includeexclude)의 테이블은  
# 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

Share: X/Twitter LinkedIn

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

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