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


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

Раздел 2. Использование HTTP-сервера Apache

Пункты:   6    7    8    9    10    11    12    13    14    15    16    17    18    19    20    21    22      23      24    25    26  

 <         > 
  RU            EN  

Пункт 23. Фильтры

Этот документ описывает использование фильтров в Apache.

Фильтрация в Apache 2

Цепочка фильтров доступна в Apache 2.0 и более поздних версиях и позволяет приложениям обрабатывать входящие и исходящие данные очень гибким и настраиваемым образом, независимо от того, откуда поступают данные. Мы можем предварительно обрабатывать входящие данные и постобрабатывать исходящие данные по желанию. Это в основном не зависит от традиционных фаз обработки запросов.

Фильтры могут быть объединены в цепочку на оси данных, ортогональной обработке запроса.

Некоторые примеры фильтрации в стандартном дистрибутиве Apache:

  • mod_include , реализует включения на стороне сервера.
  • mod_ssl , реализует SSL-шифрование (https).
  • mod_deflate , реализует сжатие/распаковку на лету.
  • mod_charset_lite , перекодирует между различными наборами символов.
  • mod_ext_filter , запускает внешнюю программу в качестве фильтра.

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

Более широкий спектр приложений реализуется сторонними фильтрующими модулями, доступными на сайте modules.apache.org и в других местах. Вот некоторые из них:

  • Обработка и перезапись HTML и XML
  • Преобразования XSLT и XIncludes
  • Поддержка пространства имен XML
  • Обработка загрузки файлов и декодирование HTML-форм
  • Обработка изображений
  • Защита уязвимых приложений, таких как PHP-скрипты
  • Редактирование поиска и замены текста

Умная фильтрация

Интеллектуальная фильтрация применяет различных поставщиков фильтров в зависимости от состояния обработки запроса.

mod_filter , включенный в Apache 2.1 и более поздние версии, позволяет динамически настраивать цепочку фильтров во время выполнения. Так, например, вы можете настроить прокси-сервер для перезаписи HTML с фильтром HTML и изображений JPEG с совершенно отдельным фильтром, несмотря на то, что прокси-сервер не имеет предварительной информации о том, что отправит исходный сервер. Это работает с использованием жгута фильтров, который отправляет различным поставщикам в соответствии с фактическим содержимым во время выполнения. Любой фильтр может быть либо вставлен непосредственно в цепочку и выполняться безоговорочно, либо использоваться в качестве поставщика и вставляться динамически. Например,

  • фильтр обработки HTML будет работать только в том случае, если содержимое является text/html или application/xhtml+xml
  • Фильтр сжатия будет работать только в том случае, если входные данные относятся к сжимаемому типу и еще не сжаты.
  • Фильтр преобразования кодировки будет вставлен, если текстовый документ еще не находится в нужной кодировке.

Предоставление фильтров как службы HTTP

Фильтры можно использовать для обработки содержимого, исходящего от клиента, в дополнение к обработке содержимого, исходящего с сервера, с помощью модуля mod_reflector .

mod_reflector принимает POST-запросы от клиентов и отражает тело запроса содержимого, полученное в рамках POST-запроса, обратно в ответ, проходя через стек выходных фильтров на обратном пути к клиенту.

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

Использование фильтров

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

Простой способ — это единственный способ настройки входных фильтров, и его достаточно для выходных фильтров, где вам нужна статическая цепочка фильтров. Соответствующие директивы SetInputFilter , SetOutputFilter , AddInputFilter , AddOutputFilter , RemoveInputFilter и RemoveOutputFilter .

Динамический способ обеспечивает как статическую, так и гибкую динамическую настройку выходных фильтров, как описано на mod_filter странице. Соответствующие директивы FilterChain , FilterDeclare , и FilterProvider .

Еще одна директива AddOutputFilterByType все еще поддерживается, но считается устаревшей. Вместо этого используйте динамическую конфигурацию.



 <         > 

Пункты:   6    7    8    9    10    11    12    13    14    15    16    17    18    19    20    21    22      23      24    25    26  

Рейтинг@Mail.ru