Apache. Документация на русском


Разделы:   1    2    3    4    5    6    7    8    9      10      11    12    13    14    15    16  

Раздел 10. Модули Апача

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132      133      134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

 <         > 
  RU            EN  

Пункт 133. Модуль Apache mod_deflate

Модуль mod_deflate предоставляет DEFLATE выходной фильтр, который позволяет сжимать выходные данные с вашего сервера перед отправкой клиенту по сети.

Поддерживаемые кодировки

Эта gzip кодировка является единственной поддерживаемой для обеспечения полной совместимости со старыми реализациями браузера. Кодировка deflate не поддерживается, пожалуйста, обратитесь к документации zlib для полного объяснения.

Примеры конфигураций

Сжатие и TLS

Некоторые веб-приложения уязвимы для атаки раскрытия информации, когда соединение TLS передает сжатые данные deflate. Для получения дополнительной информации ознакомьтесь с подробностями об атаках семейства «BREACH».

Это простая конфигурация, которая сжимает распространенные типы текстового контента.

Сжимайте только несколько типов

 AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript 

Включение сжатия

Сжатие и TLS

Некоторые веб-приложения уязвимы для атаки раскрытия информации, когда соединение TLS передает сжатые данные deflate. Для получения дополнительной информации ознакомьтесь с подробностями об атаках семейства «BREACH».

Выходное сжатие

Сжатие осуществляется фильтром DEFLATE . Следующая директива включит сжатие документов в контейнере, в котором они размещены:

 SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" без gzip 

Если вы хотите ограничить сжатие определенными типами MIME в целом, вы можете использовать директиву AddOutputFilterByType . Вот пример включения сжатия только для html-файлов документации Apache:

 <Каталог "/your-server-root/manual">
 AddOutputFilterByType DEFLATE text/html
</Каталог> 

Примечание

Фильтр DEFLATE всегда вставляется после фильтров RESOURCE, таких как PHP или SSI. Он никогда не касается внутренних подзапросов.

Примечание

Существует переменная окружения force-gzip , установленная с помощью SetEnv , которая игнорирует параметр accept-encoding вашего браузера и отправляет сжатый вывод.

Выходная декомпрессия

Модуль mod_deflate также предоставляет фильтр для заполнения/распаковки тела ответа, сжатого gzip. Чтобы активировать эту функцию, вы должны вставить INFLATE фильтр в цепочку выходных фильтров, используя SetOutputFilter или AddOutputFilter , например:

 <Расположение "/dav-область">
 ProxyPass "http://example.com/"
 SetOutputFilter INFLATE
</местоположение> 

Этот пример распаковывает сжатый gzip вывод с сайта example.com, чтобы другие фильтры могли выполнять его дальнейшую обработку.

Входная декомпрессия

Модуль mod_deflate также предоставляет фильтр для распаковки тела запроса, сжатого gzip. Чтобы активировать эту функцию, вы должны вставить DEFLATE фильтр в цепочку входных фильтров с помощью SetInputFilter или AddInputFilter , например:

 <Расположение "/dav-область">
 SetInputFilter DEFLATE
</местоположение> 

Теперь, если запрос содержит Content-Encoding: gzip заголовок, тело будет автоматически распаковываться. Немногие браузеры имеют возможность сжимать тело запроса gzip. Однако некоторые специальные приложения действительно поддерживают сжатие запросов, например, некоторые клиенты WebDAV.

Примечание о длине содержимого

Если вы сами оцениваете тело запроса, не доверяйте Content-Length заголовку! Заголовок Content-Length отражает длину входящих данных от клиента, а не количество байтов потока распакованных данных.

Работа с прокси-серверами

Модуль mod_deflate отправляет Vary: Accept-Encoding заголовок ответа HTTP, чтобы предупредить прокси-серверы о том, что кэшированный ответ следует отправлять только тем клиентам, которые отправляют соответствующий Accept-Encoding заголовок запроса. Это предотвращает отправку сжатого содержимого клиенту, который его не понимает.

Если вы используете какие-то специальные исключения, зависящие, например, от User-Agent заголовка, вы должны вручную настроить дополнение к Vary заголовку, чтобы предупредить прокси-серверы о дополнительных ограничениях. Например, в типичной конфигурации, где добавление фильтра DEFLATE зависит от User-Agent , следует добавить:

 Заголовок добавляет Vary User-Agent 

Если ваше решение о сжатии зависит от другой информации, кроме заголовков запроса ( например, версии HTTP), вы должны установить Vary для заголовка значение * . Это предотвращает полное кэширование совместимых прокси-серверов.

Пример

 Набор заголовков Варьируется * 

Обслуживание предварительно сжатого контента

Поскольку mod_deflate повторно сжимает содержимое каждый раз, когда делается запрос, можно получить некоторый выигрыш в производительности за счет предварительного сжатия содержимого и указания mod_deflate обслуживать их без повторного сжатия. Это может быть выполнено с помощью конфигурации, подобной следующей:

 <IfModule mod_headers.c>
 # Подавать файлы CSS, сжатые gzip, если они существуют
 # и клиент принимает gzip.
 RewriteCond "%{HTTP:Accept-encoding}" "gzip"
 RewriteCond "%{REQUEST_FILENAME}\.gz" -s
 RewriteRule "^(.*)\.css" "$1\.css\.gz" [QSA]
 # Подавать файлы JS, сжатые gzip, если они существуют
 # и клиент принимает gzip.
 RewriteCond "%{HTTP:Accept-encoding}" "gzip"
 RewriteCond "%{REQUEST_FILENAME}\.gz" -s
 RewriteRule "^(.*)\.js" "$1\.js\.gz" [QSA]
 # Обслуживайте правильные типы контента и предотвращайте двойное сжатие mod_deflate.
 RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1]
 RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1]
 <FilesMatch "(\.js\.gz|\.css\.gz)$">
 # Подавать правильный тип кодировки.
 Заголовок добавляет Content-Encoding gzip
 # Заставить прокси кэшировать gzip и
 # файлы css/js, не сжатые с помощью gzip, отдельно.
 Добавление заголовка Vary Accept-Encoding
 </FilesMatch>
</ЕслиМодуль> 


Директива DeflateBufferSize

Описание:Размер фрагмента, который нужно сжать за один раз с помощью zlib
Синтаксис: DeflateBufferSize value
По умолчанию: DeflateBufferSize 8096
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_deflate

Директива DeflateBufferSize указывает размер в байтах фрагментов, которые zlib должен сжимать за один раз. Если размер сжатого ответа больше, чем указанный в этой директиве, тогда httpd переключится на фрагментированное кодирование (заголовок HTTP Transfer-Encoding установлен на Chunked ) с побочным эффектом, заключающимся в том, что Content-Length заголовок HTTP не устанавливается. Это особенно важно, когда httpd работает за прокси-серверами с обратным кэшированием или когда httpd настроен с mod_cache и , mod_cache_disk потому что ответы HTTP без Content-Length заголовка могут не кэшироваться.



Директива DeflateCompressionLevel

Описание:Насколько сильно мы применяем сжатие к выходу
Синтаксис: DeflateCompressionLevel value
По умолчанию: Zlib's default
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_deflate

Директива DeflateCompressionLevel указывает, какой уровень сжатия следует использовать, чем выше значение, тем лучше сжатие, но тем больше процессорного времени требуется для этого.

Значение должно находиться в диапазоне от 1 (меньшее сжатие) до 9 (большее сжатие).



Директива DeflateFilterNote

Описание:Помещает степень сжатия в заметку для регистрации
Синтаксис: DeflateFilterNote [type] notename
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_deflate

Директива DeflateFilterNote указывает, что к запросу следует приложить примечание о коэффициентах сжатия. Имя заметки — это значение, указанное для директивы. Вы можете использовать это примечание для статистических целей, добавив значение в свой журнал доступа.

Пример

 Коэффициент DeflateFilterNote
 
 LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate
 CustomLog "logs/deflate_log" дефляция 

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

Input
Сохраните количество байтов входного потока фильтра в примечании.
Output
Сохраните количество байт выходного потока фильтра в примечании.
Ratio
Сохраните коэффициент сжатия ( output/input * 100 ) в примечании. Это значение по умолчанию, если аргумент типа опущен.

Таким образом, вы можете зарегистрировать это следующим образом:

Точная регистрация

 Ввод DeflateFilterNote in-stream
Вывод DeflateFilterNote вне потока
Соотношение DeflateFilterNote Ratio
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog "logs/deflate_log" дефляция 

Смотрите также

  • mod_log_config


Директива DeflateInflateLimitRequestBody

Описание:Максимальный размер расширенных тел запросов
Синтаксис: DeflateInflateLimitRequestBodyvalue
По умолчанию: None, but LimitRequestBody applies after deflation
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:Расширение
Модуль:mod_deflate
Совместимость:2.4.10 и выше

Директива DeflateInflateLimitRequestBody указывает максимальный размер расширенного тела запроса. Если он не установлен, LimitRequestBody применяется к надутому телу.



Директива DeflateInflateRatioBurst

Описание:Максимальное количество раз, когда коэффициент инфляции для тела запроса может быть превышен
Синтаксис: DeflateInflateRatioBurst value
По умолчанию: 3
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:Расширение
Модуль:mod_deflate
Совместимость:2.4.10 и выше

Директива DeflateInflateRatioBurst указывает максимальное количество раз, которое DeflateInflateRatioLimit может быть пересечено до завершения запроса.



Директива DeflateInflateRatioLimit

Описание:Максимальный коэффициент инфляции для тела запроса
Синтаксис: DeflateInflateRatioLimit value
По умолчанию: 200
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:Расширение
Модуль:mod_deflate
Совместимость:2.4.10 и выше

Директива DeflateInflateRatioLimit определяет максимальное отношение сдутого к увеличенному размеру расширенного тела запроса. Это соотношение проверяется по мере поступления тела, и если оно пересекается более одного DeflateInflateRatioBurst раза, запрос будет прекращен.



Директива DeflateMemLevel

Описание:Сколько памяти должен использовать zlib для сжатия
Синтаксис: DeflateMemLevel value
По умолчанию: DeflateMemLevel 9
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_deflate

Директива DeflateMemLevel указывает, сколько памяти должно использоваться zlib для сжатия (значение от 1 до 9).



Директива DeflateWindowSize

Описание:Размер окна сжатия Zlib
Синтаксис: DeflateWindowSize value
По умолчанию: DeflateWindowSize 15
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_deflate

Директива DeflateWindowSize указывает размер окна сжатия zlib (значение от 1 до 15). Как правило, чем больше размер окна, тем выше ожидаемая степень сжатия.



 <         > 

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132      133      134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

Рейтинг@Mail.ru