Apache HTTP: сжатие данных — модуль mod_deflate

Автор: | 11/18/2015
 

apache_logomod_deflate — это модуль и набор патчей для Apache, позволяющие сжимать ответ методами gzip или deflate.

Проверяем наличие модуля:

# apachectl -t -D DUMP_MODULES |grep deflate
 deflate_module (shared)

Проверяем активирован ли и активируем, если нет (Ubuntu):

# a2enmod deflate
Considering dependency filter for deflate:
Module filter already enabled
Module deflate already enabled

Или так:

# ls -l mods-enabled/ | grep defl
lrwxrwxrwx 1 root root 30 Nov 17 15:11 deflate.conf -> ../mods-available/deflate.conf
lrwxrwxrwx 1 root root 30 Nov 17 15:11 deflate.load -> ../mods-available/deflate.load

Файл настроек модуля — /etc/apache2/mods-enabled/deflate.conf:

<IfModule mod_deflate.c>
	<IfModule mod_filter.c>
		# these are known to be safe with MSIE 6
		AddOutputFilterByType DEFLATE text/html text/plain text/xml

		# everything else may cause problems with MSIE 6
		AddOutputFilterByType DEFLATE text/css
		AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
		AddOutputFilterByType DEFLATE application/rss+xml
		AddOutputFilterByType DEFLATE application/xml
	</IfModule>
</IfModule>

Включаем сжатие для *.gz-архивов.

Редактируем файл /etc/apache2/sites-enabled/000-default.conf:

...

   LogLevel debug deflate:trace3

   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

   ...
   <Directory /var/www/html>

        Options -Indexes
        AllowOverride All

        <Files *.gz>
        SetOutputFilter DEFLATE
        </Files>

    </Directory>
...

Проверяем синтаксис и перезапускаем Apache:

# apachectl -t && apachectl restart
Syntax OK

Создадим архив:

# touch /var/www/html/arch.tar.gz

Загружаем его:

# wget localhost/arch.tar.gz -o /dev/null

Проверяем логи:

# tail /var/log/apache2/error.log
...
[Wed Nov 18 08:26:57.006567 2015] [deflate:trace1] [pid 120:tid 140407648286464] mod_deflate.c(491): [client ::1:55811] Not compressing very small response of 0 bytes

И в логе deflate:

# tail /var/log/apache2/deflate_log
"GET /arch.tar.gz HTTP/1.1" -/- (-%)

Сжатие 0, т.к. файл нулевого размера.

Готово.