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 и более поздних версиях и позволяет приложениям обрабатывать входящие и исходящие данные гибким и настраиваемым способом независимо от источника данных. Можно предварительно обрабатывать входящие данные и при необходимости выполнять постобработку исходящих данных. Это в значительной степени не зависит от традиционных фаз обработки запросов.

Filters can be chained, in a Data Axis orthogonal to request processing

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

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

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

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

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

Интеллектуальная фильтрация

Smart filtering applies different filter providers according to the state of request processing

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