Spec-Zone.ru › Apache HTTP Server

Фильтры

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

Фильтрование в Apache 2

Связанные модули Связанные директивы
  • mod_filter
  • mod_deflate
  • mod_ext_filter
  • mod_include
  • mod_charset_lite
  • mod_reflector
  • mod_buffer
  • mod_data
  • mod_ratelimit
  • mod_reqtimeout
  • mod_request
  • mod_sed
  • mod_substitute
  • mod_xml2enc
  • mod_proxy_html
  • FilterChain
  • FilterDeclare
  • FilterProtocol
  • FilterProvider
  • AddInputFilter
  • AddOutputFilter
  • RemoveInputFilter
  • RemoveOutputFilter
  • ReflectorHeader
  • ExtFilterDefine
  • ExtFilterOptions
  • SetInputFilter
  • SetOutputFilter

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

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

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

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

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

Более широкий спектр приложений реализуется модулями фильтров сторонних разработчиков. Некоторые из них:

  • Обработка и переписывание 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 всё ещё поддерживается, но устарела. Используйте динамическую настройку вместо неё.

© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/filter.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API