Apache модуль · 10 min read · Sep 14, 2025

mod_gzip - обслуживание сжатого контента веб-сервером Apache - Страница 6

Автор: Майкл Шрёпл

Точное количество запрашиваемых функций должно быть описано дополнительными директивами конфигурации Apache, которые становятся доступными при интеграции модуля mod_gzip.

На данный момент действительно полная документация о воздействии этих директив недоступна; в общем, предположите, что

  • почти все может быть использовано в любой среде, т. е. - в полном объеме сервера,
  • в отдельных виртуальных хостах,
  • в директориях или даже
  • в файлах .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 будет искать статическую предсжатую  
#  версию этого файла с определенным дополнительным расширением - см. следующую  
#  директиву - которая будет доставлена с приоритетом. Это позволит  
#  избежать повторного сжатия одного и того же статического файла и, таким образом,  
#  сэкономить время ЦП.  
#  Никакого динамического кэширования этого файла не предусмотрено; в настоящее время пользователь  
#  сам отвечает за создание и обновление содержимого предсжатого  
#  файла.
#  Начиная с версии 1.3.19.2a mod_gzip автоматически распознает, является ли  
#  статически предсжатый файл старше своего несжатого  
#  оригинала, и в этом случае будет обслуживать содержимое оригинального  
#  файла в несжатом виде - чтобы скорее предоставить корректные данные, чем  
#  устаревшие ...)
# ---------------------------------------------------------------------
# расширение (суффикс) для статически предсжатых файлов  
  mod_gzip_static_suffix        .gz  
  AddEncoding              gzip .gz  
# (эффект: см. предыдущую директиву; эта строка будет добавлена к  
#  имени оригинального файла.  
#  убедитесь, что вы настроили кодировку 'gzip' для этого расширения,  
#  потому что mod_gzip не обслуживает содержимое само по себе, а просто генерирует  
#  внутреннюю переадресацию Apache на этот URL. Поэтому оставшаяся  
#  конфигурация Apache отвечает за правильную настройку заголовка 'Content-Encoding'  
#  ...  
#  до версии 1.3.19.2a это значение не было настраиваемым.)
# ---------------------------------------------------------------------
# автоматические обновления для статически предсжатых файлов  
  mod_gzip_update_static        No  
# (если установлено в 'Yes', эта директива (новая в версии 1.3.26.1a) вызовет  
# mod_gzip автоматически обновлять устаревшую версию любого  
# статически предсжатого файла во время запроса, т. е. сжать  
#  изначально запрашиваемый файл и *перезаписать* предсжатый вариант  
#  файла им!  
# для каждого автоматического обновления такого типа mod_gzip запишет сообщение  
#  с уровнем 'notice' в журнал ошибок Apache.  
# в процессе этого mod_gzip будет напрямую читать содержимое оригинального файла.  
#  следовательно, это содержимое *не может* быть интерпретировано любым другим модулем Apache  
#  во время запроса. это может *не быть* тем, что вы хотите - надеюсь,  
#  это будет тем, что большинство пользователей хотят, потому что это работает *быстро* таким образом.  
# используйте эту конфигурацию с большой осторожностью и убедитесь, что вы не  
# случайно не перезаписываете ценные файлы в дереве URL.  
# это *не является* функцией, которую следует использовать для массовых хостинговых серверов, особенно  
#  потому что mod_gzip может столкнуться с проблемами контроля доступа там -  
#  идентификатор пользователя, под которым работают процессы Apache, должен иметь доступ на запись  
#  к предсжатым файлам всех пользователей, что может не быть автоматически  
#  таковым.)  
# [обработка ошибок mod_gzip в этой ситуации??? что будет обслужено?]
# ---------------------------------------------------------------------  
  

###################  
### бюрократия ###  
###################  
  
# ---------------------------------------------------------------------  
# отображение статуса для mod_gzip  
  mod_gzip_command_version      '/mod_gzip_status'  
# (определяет URL для отображения статуса mod_gzip; может быть указано  
# индивидуально для каждой установки и защищено от доступа через  
#  секцию по соображениям конфиденциальности)  
# ---------------------------------------------------------------------  
# Отображение статуса будет выглядеть следующим образом:  
#       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, должен иметь доступ на чтение и запись к этому  
#  каталогу.  
#  В отличие от других директив Apache здесь должно быть указано абсолютное имя пути;  
#  относительное значение не будет интерпретировано относительно ServerRoot.  
#  Этот путь не должен заканчиваться '/'.  
#  Для максимальной производительности этот каталог должен находиться на диске RAM,  
#  если файловая система уже не кэшируется эффективно  
# ---------------------------------------------------------------------  
# Сохранить временные рабочие файлы [Да, Нет]  
  mod_gzip_keep_workfiles       No  
# (один файл на HTTP-запрос - установите в 'да' только для целей отладки!)  
# ---------------------------------------------------------------------  
  

##################  
### размеры файлов ###  
##################  
  
# ---------------------------------------------------------------------  
# минимальный размер (в байтах) для файлов, которые будут сжаты  
  mod_gzip_minimum_file_size    500  
# (для очень маленьких файлов сжатие даст лишь небольшие абсолютные выгоды  
#  [вы все равно сэкономите около 50% содержимого, но некоторые дополнительные  
#  500 байт HTTP и TCP заголовков всегда останутся несжатыми],  
#  но все равно создаст нагрузку на ЦП как для клиента, так и для сервера.  
#  mod_gzip автоматически установит меньшие значения, чем 300 байт для  
#  этой директивы, именно на это значение 300.)  
# ---------------------------------------------------------------------  
# максимальный размер (в байтах) для файлов, которые будут сжаты  
  mod_gzip_maximum_file_size    500000  
# (для очень больших файлов сжатие может занять довольно много времени и  
#  таким образом задержать начало передачи.  
#  Кроме того, ограничение в этот момент предотвращает сервер от  
#  создания вывода неограниченного размера в случае бесконечного цикла  
#  внутри CGI-скрипта - или даже попытки сжать потоковые данные -  
#  что в противном случае может вызвать создание временного файла любого  
#  размера и даже заполнить весь жесткий диск.  
#  С другой стороны, сжатие будет иметь гораздо более заметный  
#  субъективный эффект для больших файлов ... так что убедитесь, что вы точно настроили это  
#  в соответствии с вашими требованиями.)  
# ---------------------------------------------------------------------  
# максимальный размер (в байтах) для файлов, которые будут сжаты в памяти  
  mod_gzip_maximum_inmem_size   60000  
# (более крупные файлы будут сжаты в каталог временных файлов; адаптируйте  
#  это значение к доступной основной памяти вашего сервера.  
#  В mod_gzip 1.3.19.x более крупные значения будут автоматически ограничены до  
#  60000, потому что некоторые операционные системы, как сообщается, имеют проблемы  
#  с выделением более 64 кб памяти за раз.  
# ---------------------------------------------------------------------  
  

####################  
### требования ###  
####################  
  
# (см. главу о кэшировании для проблем при использовании этих директив.)  
# ---------------------------------------------------------------------  
# Требуемая версия 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)  
# ========================================  
# НЕТ:   специальные сломанные браузеры, которые запрашивают сжатый контент  
#       но затем не могут обрабатывать его правильно  
  mod_gzip_item_exclude         reqheader  "User-agent: Mozilla/4.0[678]"
# Начиная с версии 1.3.19.2a я *не рекомендую использовать фильтры*  
# *для пользовательских агентов*, так как это приведет к созданию HTTP-заголовков 'Vary: User-Agent'  
#  и, таким образом, усложнит жизнь прокси-серверам.
#  
# ДА:   HTML-документы  
  mod_gzip_item_include         file       \.html$  
#  
# НЕТ:   включить файлы / JavaScript и CSS (из-за ошибок Netscape4)  
  mod_gzip_item_exclude         file       \.js$  
  mod_gzip_item_exclude         file       \.css$  
#  
# ДА:  CGI-скрипты  
  mod_gzip_item_include         file       \.pl$  
  mod_gzip_item_include         handler    ^cgi-script$  
#  
# фаза 2: (mime, rspheader)  
# ===========================  
# ДА:  обычные HTML-файлы, обычные текстовые файлы, списки директорий Apache  
  mod_gzip_item_include         mime       ^text/html$  
  mod_gzip_item_include         mime       ^text/plain$  
  mod_gzip_item_include         mime       ^httpd/unix-directory$  
#  
# НЕТ:   изображения (GIF и т. д., редко когда что-то сэкономит)  
  mod_gzip_item_exclude         mime       ^image/  
# ---------------------------------------------------------------------  
# На самом деле mod_gzip проверяет только первые 4 символа первого  
# операнда (в случае uri даже только первые 2 символа, чтобы  
#  позволить значениям, таким как url).  
# ---------------------------------------------------------------------  
# Таблица правил mod_gzip_item (включить и исключить) не может содержать  
# более 256 записей; когда это число превышается, mod_gzip выведет  
# сообщение "mod_gzip: ERROR: Индекс элемента полон"  
# и сообщит об ошибке конфигурации серверу Apache.  
# ---------------------------------------------------------------------  
# Описанные здесь значения директив предназначены для того, чтобы описать запросы,  
# выбранные для сжатия *наиболее точно*.  
# Особенно для правил mime необходимо уточнить, что HTTP  
# заголовок 'Content-Type' (который будет проверяться mod_gzip для этого правила)  
# в некоторых случаях может содержать не только MIME-тип, но и  
# описание набора символов (charset).  
# Если это так для обрабатываемых запросов, то вам нужно  
# удалить символ '$' в конце соответствующего значения, чтобы теперь  
# только префикс этого значения проверялся на соответствие.  
# ---------------------------------------------------------------------  
  

##########################  
### кодировки передачи ###  
##########################  
  
# ---------------------------------------------------------------------  
# Позволить mod_gzip устранить HTTP-заголовок  
#    'Transfer-encoding: chunked'  
# и объединить фрагменты в один (сжимаемый) пакет  
  mod_gzip_dechunk              Yes  
# (это необходимо для обработки нескольких типов динамически сгенерированного  
# содержимого, особенно для страниц CGI и SSI, но также и для страниц, производимых  
# некоторыми интерпретаторами Java Servlet.  
# ---------------------------------------------------------------------  
  

###############  
### ведение журнала ###  
###############  
  
# ---------------------------------------------------------------------  
# Расширенный формат журнала (для тестирования эффекта сжатия)  
  LogFormat                     "%h %l %u %t \"%V %r\" %  
# ---------------------------------------------------------------------  
# Создать дополнительный файл журнала  
  CustomLog                     logs/mod_gzip.log common_with_mod_gzip_info2  
# (конечно, вы можете переопределить формат вашего обычного файла журнала, но вы можете  
#  сохранить его формат стандартно совместимым для оценки стандартными веб-  
#  аналитическими инструментами. Так что мы просто создаем еще один файл журнала.)  
# ---------------------------------------------------------------------  
# Объем вычисления доставленных файлов внутри журнала доступа Apache:  
# учитывайте размер HTTP-заголовка (в байтах) как часть общего размера вывода  
  mod_gzip_add_header_count     Yes  
# (Это будет больше, чем чистое содержимое документа, но это более  
#  реалистично опишет общий выходной трафик HTTP-запроса)  
# ---------------------------------------------------------------------

###############  
### прокси ###  
###############  
  
# ---------------------------------------------------------------------  
# отправка HTTP-заголовка 'Vary'  
  mod_gzip_send_vary            On  
# (см. главу о кэшировании для этой директивы.)  
#  *не изменяйте это, если вы абсолютно не знаете, что делаете!*  
# ---------------------------------------------------------------------
  

Порядок загрузки модулей

При динамическом добавлении этого модуля вы должны помнить, что mod_gzip должен быть указан как последний из нескольких директив LoadModule, которые будут использоваться.

Это связано с тем, что Apache будет внутренне строить стек из директив LoadModule и позже оценивать его в обратном порядке.

mod_gzip подключается к routine type_checker Apache; но только первый из всех модулей, объявляющих себя ответственными за обработку запроса (например, ColdFusion и SSL попытаются это сделать) действительно будет активирован Apache. Поэтому mod_gzip должен быть активирован до тех модулей, вывод которых он хочет перенаправить в себя и затем обработать - пока эти модули пытаются использовать тот же интерфейс type_checker … если они этого не делают, то это может работать независимо от этого порядка директив.

Во время стартового сообщения Apache (которое можно найти, например, в журнале ошибок Apache) модули с индивидуальными спецификациями версий могут быть перечислены точно в порядке, в котором они появляются в цепочке модулей; там mod_gzip должен быть перечислен до других модулей, вывод которых предназначен для сжатия.

Оригинальное местоположение этого документа:

http://www.schroepl.net/projekte/mod_gzip/config.htm

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.