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  

Пункт 165. Модуль Apache mod_mime_magic

Этот модуль определяет MIME-тип файлов так же, как file(1) работает команда Unix: он просматривает первые несколько байтов файла. Он предназначен как «вторая линия защиты» для случаев, которые mod_mime не могут быть разрешены.

Этот модуль является производным от бесплатной версии команды file(1) для Unix, которая использует «магические числа» и другие подсказки из содержимого файла, чтобы выяснить, что это за содержимое. Этот модуль активен, только если магический файл указан в директиве MimeMagicFile .

Формат магического файла

Содержимое файла представляет собой обычный текст ASCII в 4-5 колонках. Пустые строки разрешены, но игнорируются. В закомментированных строках используется решетка ( # ). Остальные строки анализируются для следующих столбцов:

СтолбецОписание
1 номер байта для начала проверки с
" > " указывает на зависимость от предыдущей > строки, отличной от " "
2

тип данных для соответствия

byte один символ
short 16-битное целое число машинного порядка
long 32-битное целое число машинного порядка
string строка произвольной длины
date длинная целочисленная дата (секунды с эпохи Unix/1970)
beshort 16-битное целое с обратным порядком байтов
belong 32-битное целое с обратным порядком байтов
bedate 32-битная целочисленная дата с обратным порядком байтов
leshort 16-битное целое с прямым порядком байтов
lelong 32-битное целое с прямым порядком байтов
ledate 32-битная целочисленная дата с прямым порядком байтов
3 содержимое данных для соответствия
4 Тип MIME, если он соответствует
5 Кодировка MIME при совпадении (необязательно)

Например, следующие волшебные строки файла распознают некоторые аудиоформаты:

 # Звуковые данные Sun/NeXT
0 строка .snd
>12 принадлежат 1 аудио/базовый
>12 принадлежат 2 аудио/базовые
>12 принадлежат 3 аудио/базовые
>12 принадлежат 4 аудио/базовые
>12 принадлежат 5 аудио/базовым
>12 принадлежат 6 аудио/базовым
>12 принадлежат 7 аудио/базовые
>12 принадлежат 23 аудио/x-adpcm 

Или они распознают разницу между *.doc файлами, содержащими документы Microsoft Word или FrameMaker. (Это несовместимые форматы файлов, которые используют один и тот же суффикс файла.)

 # Рамка
0 строка \<приложение MakerFile/x-frame
0 строка \<приложение MIFFile/x-frame
0 строка \<приложение MakerDictionary/x-frame
0 строка \<приложение MakerScreenFon/x-frame
0 строка \<приложение MML/x-кадр
0 string \<Приложение книги/x-frame
0 строка \<приложение Maker/x-frame
# MS Word
0 строка \376\067\0\043 приложение/msword
0 строка \320\317\021\340\241\261 приложение/msword
0 строка \333\245-\0\0\0 приложение/msword 

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

 # gzip (GNU zip, не путать с
# [Info-ZIP/PKWARE] zip-архиватор)
0 строка \037\213 приложение/октет-поток x-gzip 

Проблемы с производительностью

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

Однако была предпринята попытка повысить производительность исходного file(1) кода, чтобы он соответствовал загруженному веб-серверу. Он был разработан для сервера, на котором тысячи пользователей публикуют свои собственные документы. Вероятно, это очень распространено в интрасетях. Во многих случаях полезно, если сервер может принимать более разумные решения о содержимом файла, чем позволяет имя файла ... даже если просто уменьшить количество вызовов «почему моя страница не работает», когда пользователи неправильно называют свои файлы. Вы должны решить, подходит ли дополнительная работа для вашей среды.

Примечания

Следующие примечания относятся к mod_mime_magic модулю и включены сюда для соблюдения ограничений авторского права участников, которые требуют их подтверждения.

mod_mime_magic: поиск типа MIME с помощью магических номеров файлов
Copyright (c) 1996-1997 Cisco Systems, Inc.

Это программное обеспечение было представлено компанией Cisco Systems группе Apache в июле 1997 г. Будущие версии и производные этого исходного кода должны указывать Cisco Systems как первоначального автора этого модуля. Все остальные условия лицензирования и использования принадлежат Apache Group.

Часть этого кода получена из бесплатной версии команды file, первоначально размещенной на comp.sources.unix. Информация об авторских правах для этой программы приведена ниже по мере необходимости.

- Copyright (c) Ян Ф. Дарвин, 1987. Автор Ян Ф. Дарвин.

Это программное обеспечение не подлежит какой-либо лицензии Американской телефонной и телеграфной компании или Регентов Калифорнийского университета.

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

  1. Автор не несет ответственности за последствия использования данного программного обеспечения, какими бы ужасными они ни были, даже если они возникают из-за недостатков в нем.
  2. Происхождение этого программного обеспечения не должно быть искажено ни явным заявлением, ни упущением. Поскольку лишь немногие пользователи когда-либо читали исходные тексты, в документации должны быть указаны авторы.
  3. Измененные версии должны быть четко обозначены как таковые и не должны представляться в ложном свете как оригинальное программное обеспечение. Поскольку лишь немногие пользователи когда-либо читали исходные тексты, в документации должны быть указаны авторы.
  4. Это уведомление не может быть удалено или изменено.

Для соответствия условиям г-на Дарвина: это было очень значительно изменено по сравнению с бесплатной командой «файл».

  • файл «все в одном» для удобства компиляции при переходе с одной версии Apache на другую.
  • Распределение памяти осуществляется через структуру пула Apache API.
  • Всем функциям были переданы необходимые запросы API Apache или структуры сервера, если это необходимо для вызова других подпрограмм API Apache. ( т. е . обычно для регистрации, файлов или выделения памяти самой по себе или вызываемой функции.)
  • struct magic была преобразована из массива в односторонний связанный список, потому что он увеличивает только одну запись за раз, доступ к нему осуществляется только последовательно, а Apache API не имеет эквивалента realloc() .
  • Функции были изменены, чтобы получать свои параметры из конфигурации сервера, а не из глобалов. (Сейчас он должен быть реентерабельным, но он не тестировался в многопоточной среде.)
  • Места, где раньше результаты выводились на стандартный вывод, теперь сохраняются в списке, где они используются для установки типа MIME в записи запроса Apache.
  • Флаги командной строки были удалены, так как здесь они никогда не будут использоваться.


Директива MimeMagicFile

Описание:Включить определение типа MIME на основе содержимого файла с использованием указанного магического файла
Синтаксис: MimeMagicFile file-path
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_mime_magic

Директиву MimeMagicFile можно использовать для включения этого модуля, файл по умолчанию распространяется по адресу conf/magic . Некорневые пути относятся к ServerRoot . Виртуальные хосты будут использовать тот же файл, что и основной сервер, если не используется более конкретная настройка, и в этом случае более конкретная настройка переопределяет файл основного сервера.

Пример

 MimeMagicFile conf/magic 


 <         > 

Пункты:   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