Apache 압축전송( mod_deflate )

Share

Last Updated on 8월 17, 2021 by Jade(정현호)

 

mod_deflate

Apache 의 mod_deflate 는 웹 서버에서 출력 하는 텍스트 컨탠츠를 gzip 알고리즘을 통해 압축하는 모듈 입니다.




해당 모듈을
이용하게 되면 트레픽을 줄일뿐 아니라 웹 페이지 전송 속도도 향상시킬수 있습니다.

Apache 2.2 버전 이상에서는 mod_deflate 모듈을 디폴트로 제공하고 있어 설정을 통해 Gzip 압축 전송 기능 바로 사용 할 수 있습니다.


mod_deflate 설정

deflate_module 기능을 사용하기 위해서는 모듈이 로드 되어있는지를 확인 해야 합니다.

사용 중인 Apache 에서 httpd.conf 등에서 아래와 같이 mod_deflate.so 모듈에 대한 내용이 설정되어 있는지를 확인 합니다.

LoadModule deflate_module modules/mod_deflate.so

Apache 2.2 버전 이상에서는 mod_deflate 모듈을 디폴트로 제공하고 있어 httpd.conf 파일 등에 설정을 하면 Gzip 압축 전송 기능 바로 사용 할 수 있습니다.

[추가 정보] 2.2 이하 버전에서 DSO 모듈 추가 하기
cd /소스경로/modules/filters
/usr/local/apache/bin/apxs -cia -Wl,"-lz" mod_deflate.c


설치 완료후 모듈 확인
(2.2 에서는 확인 안 되지만 정상작동 됨)

/usr/local/apache/bin/httpd -l
mod_deflate.c


모듈이 정상적으로 올려 왔다면 httpd.conf 에 아래 내용을 추가 합니다.

<IfModule mod_deflate.c>
AddType text/html .html .htm
AddType text/css  .css
AddType application/xml .xml
AddType application/javascript  .js
AddType application/x-httpd-php .php .php3 .html .htm .phtml .inc
AddType application/x-httpd-php-source .phps

AddOutputFilterByType DEFLATE text/plain text/html text/xml
AddOutputFilterByType DEFLATE application/xhtml+xml application/xml application/rss+xml
AddOutputFilterByType DEFLATE text/css application/javascript application/x-javascript
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/php
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp

DeflateCompressionLevel 9          #사용할 압축레벨을 선택, 값이 클수록 압축률이 증가하지만, CPU를 더 많이 사용함


BrowserMatch ^Mozilla/4 gzip-only-text/html                # Netscape 4.xx에는 HTML만 압축해서 보냄
BrowserMatch ^Mozilla/4\.0[678] no-gzip                   # Netscape 4.06~4.08에는 압축해서 보내지 않음
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html     # 자신을 Mozilla로 알리는 MSIE에는 그대로 압축해서 보냄

# 압축하지 않을 파일들을 지정
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|bmp|zip|tar|rar|alz|a00|ace|txt|mp3|mpe?g|wav|asf|wma|wmv|swf|exe|pdf|doc|xsl|hwp|java|c|t?gz|bz2|7z)$ no-gzip dont-vary

</ifModule>


위와 같이 설정이 적용 되면 text/html/css/js/xml 파일들은 웹 서버에서는 gzip으로 압축하여 클라이언트에게 전송하게 됩니다.

이미지나, zip 등의 압축 파일 mpeg 와 같은 영상은 이미 파일 고유의 포맷기술로 압축이 되어있기 때문에 추가적인 압축이 불가 합니다.

그렇기 때문에 서버에서 압축 효과가 없는 파일에 대해서는 압축을 제외 하게 되는 것 입니다.

아파치 서비스를 재시작 한 후 정상적으로 압축되어 전송 되는지 확인을 해야 합니다.


압축 전송 여부를 체크를 해주는 사이트는 여러 곳이 있으며 대표적인 한곳의 링크는 아래와 같습니다
http://www.whatsmyip.org/http_compression/


압축 기능이 정상적으로 적용되어 있다면 위와 같이 확인 되게 됩니다.


구글에서는 사이트에 대해서 다양한 내용으로 분석 해주는 Site Insight 서비스가 있으며 해당 서비스를 통해서도 압축 전송 여부를 확인 할 수 있습니다
https://developers.google.com/speed/pagespeed/insights/


1
0
글에 대한 당신의 생각을 기다립니다. 댓글 의견 주세요!x