<-
Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.2

Please note

This document refers to the 2.2 version of Apache httpd, which is no longer maintained. The active release is documented here. If you have not already upgraded, please follow this link for more information.

You may follow this link to go to the current version of this document.

フィルタ

翻訳済み言語:  en  |  es  |  fr  |  ja  |  ko  |  tr 

Apache でのフィルタの使い方について記述しています。

top

Apache 2 のフィルタ

Apache 2.0 以降ではフィルタチェイン機能が使え、データが どこから来るかに関わらず、非常に柔軟で調整しやすい方法で 入出力データを処理できます。 入力データをプリプロセスしたり出力データをポストプロセスしたりできます。 この処理は、これまでのリクエスト処理フェーズとは根本的に独立した 処理になります。

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

Apache の標準的なディストリビューションでのフィルタ例は :

チャンキングやバイトレンジ処理といった処理を行うために Apache は、内部的にいくつかのフィルタを使っています。

様々なアプリケーションがサードパーティ製のフィルタモジュールとして 実装されていて、modules.apache.org などから取得できます。たとえば :

top

スマートフィルタ

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

Apache 2.1 移行に含まれる mod_filter では、 実行時に動的にフィルタチェインを有効にできます。 ですからたとえば、HTML を HTML フィルタで、JPEG 画像をそれとは 全く別のフィルタで、書き換えるようなプロクシを設定することもできます。 その上、そのプロクシはどのオリジンサーバがコンテンツを送信するか 事前情報無しでいいように構成できます。 これは、実行時に実際のコンテンツに応じて別々のフィルタプロバイダに ディスパッチするフィルタハーネスを使うことで実現されています。 チェインの中に直接入れて無条件に適用したり、動的にプロバイダとして 適用するようにしたりすることは、どんなフィルタでもできます。 たとえば、

top

フィルタの使い方

フィルタの使い方には二つの方法があります: シンプルとダイナミック。 一般的にはどちらかのみを使ったほうがよいでしょう。 これらを組み合わせて使用すると、予期しない結果になるかもしれません。 (とはいえ、シンプルな入力フィルタとシンプルあるいはダイナミックな 出力フィルタを組み合わせることは自由に出来ます。)

シンプルな方法は、入力フィルタのみを設定し、必要に応じて 静的なフィルタチェインを出力フィルタとして設定する方法です。 関連するディレクティブは、 SetInputFilter, SetOutputFilter, AddInputFilter, AddOutputFilter, RemoveInputFilter, RemoveOutputFilter になります。

ダイナミックな方法は、静的なものとフレキシブルなものを両方有効にする 方法で、mod_filter のページで述べられています。 関連するディレクティブは、 FilterChain, FilterDeclare, FilterProvider になります。

ディレクティブ AddOutputFilterByType はまだサポートされていますが、種々の問題をはらんでおり、非推奨です。 ダイナミックな設定方法を代わりに使ってください。

翻訳済み言語:  en  |  es  |  fr  |  ja  |  ko  |  tr 

top

コメント

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.