Blame docs/manual/mod/mod_ext_filter.html.ja.utf8

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head>
Packit 90a5c9
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
Packit 90a5c9
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
              This file is generated from xml source: DO NOT EDIT
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
      -->
Packit 90a5c9
<title>mod_ext_filter - Apache HTTP サーバ バージョン 2.4</title>
Packit 90a5c9
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
Packit 90a5c9
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
Packit 90a5c9
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
Packit 90a5c9
<script src="../style/scripts/prettify.min.js" type="text/javascript">
Packit 90a5c9
</script>
Packit 90a5c9
Packit 90a5c9
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
Packit 90a5c9
<body>
Packit 90a5c9
Packit 90a5c9

モジュール | ディレクティブ | FAQ | 用語 | サイトマップ

Packit 90a5c9

Apache HTTP サーバ バージョン 2.4

Packit 90a5c9
Packit 90a5c9
<-
Packit 90a5c9
Packit 90a5c9
Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.4 > モジュール
Packit 90a5c9
Packit 90a5c9

Apache モジュール mod_ext_filter

Packit 90a5c9
Packit 90a5c9

翻訳済み言語:  en  |

Packit 90a5c9
 fr  |
Packit 90a5c9
 ja  |
Packit 90a5c9
 ko 

Packit 90a5c9
Packit 90a5c9
この日本語訳はすでに古くなっている
Packit 90a5c9
            可能性があります。
Packit 90a5c9
            最近更新された内容を見るには英語版をご覧下さい。
Packit 90a5c9
        
Packit 90a5c9
説明:レスポンスのボディをクライアントに送る前に外部プログラムで処理する
Packit 90a5c9
ステータス:Extension
Packit 90a5c9
モジュール識別子:ext_filter_module
Packit 90a5c9
ソースファイル:mod_ext_filter.c
Packit 90a5c9

概要

Packit 90a5c9
Packit 90a5c9
    

mod_ext_filter では フィルタ

Packit 90a5c9
    の慣れ親しんだ単純なプログラミングモデルが提供されます。このモジュールを
Packit 90a5c9
    使えば、標準入力から読み込んで、標準出力に書き出すプログラム
Packit 90a5c9
    (すなわち Unix 形式のフィルタコマンド) を Apache のフィルタにすることが
Packit 90a5c9
    できます。このフィルタの機構は、Apache API 向けに書かれた Apache
Packit 90a5c9
    サーバプロセス内で実行される専用のフィルタよりもずっと遅いですが、
Packit 90a5c9
    以下のような利点もあります。

Packit 90a5c9
Packit 90a5c9
    
    Packit 90a5c9
          
  • ずっとシンプルなプログラミングモデル
  • Packit 90a5c9
    Packit 90a5c9
          
  • プログラムが標準入力から読んで標準出力に書くものである限り、
  • Packit 90a5c9
          どんなプログラム言語やスクリプト言語でも使うことができる
    Packit 90a5c9
    Packit 90a5c9
          
  • 既存のプログラムを変更することなく Apache のフィルタとして
  • Packit 90a5c9
          使うことができる
    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    性能の問題により実運用に適さないとしても、フィルタのプロトタイプ用の

    Packit 90a5c9
        環境としては mod_ext_filter は使えます。

    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
    Support Apache!

    トピック

    Packit 90a5c9
      Packit 90a5c9
    • Packit 90a5c9

      ディレクティブ

      Packit 90a5c9
        Packit 90a5c9
      • ExtFilterDefine
      • Packit 90a5c9
      • ExtFilterOptions
      • Packit 90a5c9
        Packit 90a5c9

        Bugfix checklist

        参照

        Packit 90a5c9
          Packit 90a5c9
        • フィルタ
        • Packit 90a5c9
        • コメント
        • Packit 90a5c9
          top
          Packit 90a5c9
          Packit 90a5c9

          Packit 90a5c9
          Packit 90a5c9
              

          他のタイプのレスポンスから HTML を生成する

          Packit 90a5c9
                

          Packit 90a5c9
                  # mod_ext_filter directive to define a filter
          Packit 90a5c9
                  # to HTML-ize text/c files using the external
          Packit 90a5c9
                  # program /usr/bin/enscript, with the type of
          Packit 90a5c9
                  # the result set to text/html
          Packit 90a5c9
                  ExtFilterDefine c-to-html mode=output \
          Packit 90a5c9
                  
          Packit 90a5c9
                    intype=text/c outtype=text/html \
          Packit 90a5c9
                    cmd="/usr/bin/enscript --color -W html -Ec -o - -"
          Packit 90a5c9
                  
          Packit 90a5c9
                  
          Packit 90a5c9
                  <Directory "/export/home/trawick/apacheinst/htdocs/c">
          Packit 90a5c9
                  
          Packit 90a5c9
                    # core directive to cause the new filter to
          Packit 90a5c9
                    # be run on output
          Packit 90a5c9
                    SetOutputFilter c-to-html
          Packit 90a5c9
                    
          Packit 90a5c9
                    # mod_mime directive to set the type of .c
          Packit 90a5c9
                    # files to text/c
          Packit 90a5c9
                    AddType text/c .c
          Packit 90a5c9
                    
          Packit 90a5c9
                    # mod_ext_filter directive to set the debug
          Packit 90a5c9
                    # level just high enough to see a log message
          Packit 90a5c9
                    # per request showing the configuration in force
          Packit 90a5c9
                    ExtFilterOptions DebugLevel=1
          Packit 90a5c9
                  
          Packit 90a5c9
                  </Directory>
          Packit 90a5c9
                

          Packit 90a5c9
              
          Packit 90a5c9
          Packit 90a5c9
              

          コンテントエンコーディングのフィルタを実装する

          Packit 90a5c9
                

          注: この gzip の例はデモ用です。実用的な実装は

          Packit 90a5c9
                mod_deflate を参照してください。

          Packit 90a5c9
          Packit 90a5c9
                

          Packit 90a5c9
                  # mod_ext_filter directive to define the external filter
          Packit 90a5c9
                  ExtFilterDefine gzip mode=output cmd=/bin/gzip
          Packit 90a5c9
                  
          Packit 90a5c9
                  <Location /gzipped>
          Packit 90a5c9
                  
          Packit 90a5c9
                    # core directive to cause the gzip filter to be
          Packit 90a5c9
                    # run on output
          Packit 90a5c9
                    SetOutputFilter gzip
          Packit 90a5c9
                    
          Packit 90a5c9
                    # mod_header directive to add
          Packit 90a5c9
                    # "Content-Encoding: gzip" header field
          Packit 90a5c9
                    Header set Content-Encoding gzip
          Packit 90a5c9
                  
          Packit 90a5c9
                  </Location>
          Packit 90a5c9
                

          Packit 90a5c9
              
          Packit 90a5c9
          Packit 90a5c9
              

          サーバを遅くする

          Packit 90a5c9
                

          Packit 90a5c9
                  # mod_ext_filter directive to define a filter
          Packit 90a5c9
                  # which runs everything through cat; cat doesn't
          Packit 90a5c9
                  # modify anything; it just introduces extra pathlength
          Packit 90a5c9
                  # and consumes more resources
          Packit 90a5c9
                  ExtFilterDefine slowdown mode=output cmd=/bin/cat \
          Packit 90a5c9
                  
          Packit 90a5c9
                    preservescontentlength
          Packit 90a5c9
                  
          Packit 90a5c9
                  
          Packit 90a5c9
                  <Location />
          Packit 90a5c9
                  
          Packit 90a5c9
                    # core directive to cause the slowdown filter to
          Packit 90a5c9
                    # be run several times on output
          Packit 90a5c9
                    #
          Packit 90a5c9
                    SetOutputFilter slowdown;slowdown;slowdown
          Packit 90a5c9
                  
          Packit 90a5c9
                  </Location>
          Packit 90a5c9
                

          Packit 90a5c9
              
          Packit 90a5c9
          Packit 90a5c9
              

          sed を使って応答中のテキストを置換する

          Packit 90a5c9
                

          Packit 90a5c9
                  # mod_ext_filter directive to define a filter which
          Packit 90a5c9
                  # replaces text in the response
          Packit 90a5c9
                  #
          Packit 90a5c9
                  ExtFilterDefine fixtext mode=output intype=text/html \
          Packit 90a5c9
                  
          Packit 90a5c9
                    cmd="/bin/sed s/verdana/arial/g"
          Packit 90a5c9
                  
          Packit 90a5c9
                  
          Packit 90a5c9
                  <Location />
          Packit 90a5c9
                  
          Packit 90a5c9
                    # core directive to cause the fixtext filter to
          Packit 90a5c9
                    # be run on output
          Packit 90a5c9
                    SetOutputFilter fixtext
          Packit 90a5c9
                  
          Packit 90a5c9
                  </Location>
          Packit 90a5c9
                

          Packit 90a5c9
              
          Packit 90a5c9
          Packit 90a5c9
              

          別のフィルタのトレース

          Packit 90a5c9
                

          Packit 90a5c9
                  # Trace the data read and written by mod_deflate
          Packit 90a5c9
                  # for a particular client (IP 192.168.1.31)
          Packit 90a5c9
                  # experiencing compression problems.
          Packit 90a5c9
                  # This filter will trace what goes into mod_deflate.
          Packit 90a5c9
                  ExtFilterDefine tracebefore \
          Packit 90a5c9
                  
          Packit 90a5c9
                    cmd="/bin/tracefilter.pl /tmp/tracebefore" \
          Packit 90a5c9
                    EnableEnv=trace_this_client
          Packit 90a5c9
                  
          Packit 90a5c9
                  
          Packit 90a5c9
                  # This filter will trace what goes after mod_deflate.
          Packit 90a5c9
                  # Note that without the ftype parameter, the default
          Packit 90a5c9
                  # filter type of AP_FTYPE_RESOURCE would cause the
          Packit 90a5c9
                  # filter to be placed *before* mod_deflate in the filter
          Packit 90a5c9
                  # chain.  Giving it a numeric value slightly higher than
          Packit 90a5c9
                  # AP_FTYPE_CONTENT_SET will ensure that it is placed
          Packit 90a5c9
                  # after mod_deflate.
          Packit 90a5c9
                  ExtFilterDefine traceafter \
          Packit 90a5c9
                  
          Packit 90a5c9
                    cmd="/bin/tracefilter.pl /tmp/traceafter" \
          Packit 90a5c9
                    EnableEnv=trace_this_client ftype=21
          Packit 90a5c9
                  
          Packit 90a5c9
                  
          Packit 90a5c9
                  <Directory /usr/local/docs>
          Packit 90a5c9
                  
          Packit 90a5c9
                    SetEnvIf Remote_Addr 192.168.1.31 trace_this_client
          Packit 90a5c9
                    SetOutputFilter tracebefore;deflate;traceafter
          Packit 90a5c9
                  
          Packit 90a5c9
                  </Directory>
          Packit 90a5c9
                

          Packit 90a5c9
          Packit 90a5c9
                

          データをトレースするフィルタ:

          Packit 90a5c9
                  #!/usr/local/bin/perl -w
          Packit 90a5c9
                  use strict;
          Packit 90a5c9
                  
          Packit 90a5c9
                  open(SAVE, ">$ARGV[0]")
          Packit 90a5c9
                  
          Packit 90a5c9
                    or die "can't open $ARGV[0]: $?";
          Packit 90a5c9
                  
          Packit 90a5c9
                  
          Packit 90a5c9
                  while (<STDIN>) {
          Packit 90a5c9
                  
          Packit 90a5c9
                    print SAVE $_;
          Packit 90a5c9
                    print $_;
          Packit 90a5c9
                  
          Packit 90a5c9
                  }
          Packit 90a5c9
                  
          Packit 90a5c9
                  close(SAVE);
          Packit 90a5c9
                

          Packit 90a5c9
              
          Packit 90a5c9
          Packit 90a5c9
          top
          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          説明:外部フィルタを定義
          Packit 90a5c9
          構文:ExtFilterDefine filtername parameters
          Packit 90a5c9
          コンテキスト:サーバ設定ファイル
          Packit 90a5c9
          ステータス:Extension
          Packit 90a5c9
          モジュール:mod_ext_filter
          Packit 90a5c9
          Packit 90a5c9
              

          ExtFilterDefine は、実行するプログラムや

          Packit 90a5c9
              引数など、外部フィルタの特性を定義します。

          Packit 90a5c9
          Packit 90a5c9
              

          filtername は定義するフィルタの名前を指定します。

          Packit 90a5c9
              この名前は後で SetOutputFilter
          Packit 90a5c9
              ディレクティブで指定できます。名前は登録されるすべてのフィルタで
          Packit 90a5c9
              一意でなくてはなりません。現時点では、フィルタの登録 API からは
          Packit 90a5c9
              エラーは報告されません。ですから、重複する名前を使ってしまったときでも
          Packit 90a5c9
              ユーザにはそのことは報告されません。

          Packit 90a5c9
          Packit 90a5c9
              

          続くパラメータの順番は関係無く、それらは実行する外部コマンドと、

          Packit 90a5c9
              他の特性を定義します。cmd= だけが必須のパラメータです。
          Packit 90a5c9
              指定可能なパラメータは:

          Packit 90a5c9
          Packit 90a5c9
              
          Packit 90a5c9
                
          cmd=cmdline
          Packit 90a5c9
          Packit 90a5c9
                
          cmd= キーワードは実行する外部コマンドを指定します。
          Packit 90a5c9
                プログラム名の後に引数がある場合は、コマンド行は引用符で囲む
          Packit 90a5c9
                必要があります (例えばcmd="/bin/mypgm
          Packit 90a5c9
                arg1 arg2" のように)。プログラムは
          Packit 90a5c9
                シェル経由でなく、直接実行されますので、通常のシェル用の
          Packit 90a5c9
                エスケープは必要ありません。プログラムの引数は空白で区切られます。
          Packit 90a5c9
                プログラムの引数の一部となる必要のある空白はバックスペースでエスケープ
          Packit 90a5c9
                できます。引数の一部になるバックスラッシュはバックスラッシュで
          Packit 90a5c9
                エスケープする必要があります。標準の CGI 環境変数に加えて、
          Packit 90a5c9
                環境変数 DOCUMENT_URI, DOCUMENT_PATH_INFO, and 
          Packit 90a5c9
                QUERY_STRING_UNESCAPED がプログラムのために設定されます。
          Packit 90a5c9
          Packit 90a5c9
                
          mode=mode
          Packit 90a5c9
          Packit 90a5c9
                
          応答を処理するフィルタには mode=output (デフォルト)
          Packit 90a5c9
                を使います。リクエストを処理するフィルタには mode=input
          Packit 90a5c9
                を使います。mode=input は Apache 2.1 以降で利用可能です。
          Packit 90a5c9
          Packit 90a5c9
                
          intype=imt
          Packit 90a5c9
          Packit 90a5c9
                
          このパラメータはフィルタされるべきドキュメントの
          Packit 90a5c9
                インターネットメディアタイプ (すなわち、MIME タイプ) を
          Packit 90a5c9
                指定します。デフォルトではすべてのドキュメントがフィルタされます。
          Packit 90a5c9
                intype= が指定されていれば、フィルタは指定されていない
          Packit 90a5c9
                ドキュメントには適用されなくなります。
          Packit 90a5c9
          Packit 90a5c9
                
          outtype=imt
          Packit 90a5c9
          Packit 90a5c9
                
          このパラメータはフィルタされたドキュメントの
          Packit 90a5c9
                インターネットメディアタイプ (すなわち、MIME タイプ) を
          Packit 90a5c9
                指定します。フィルタ動作にともなってインターネットメディアタイプが
          Packit 90a5c9
                変わる場合に有用です。デフォルトではインターネットメディアタイプは
          Packit 90a5c9
                変更されません。
          Packit 90a5c9
          Packit 90a5c9
                
          PreservesContentLength
          Packit 90a5c9
          Packit 90a5c9
                
          PreservesContentLength キーワードはフィルタが
          Packit 90a5c9
                content length (訳注: コンテントの長さ)
          Packit 90a5c9
                を変更しないということを指定します。ほとんどのフィルタは
          Packit 90a5c9
                content length を変更するため、これはデフォルトではありません。
          Packit 90a5c9
                フィルタが長さを変えないときは、このキーワードを指定すると
          Packit 90a5c9
                よいでしょう。
          Packit 90a5c9
          Packit 90a5c9
                
          ftype=filtertype
          Packit 90a5c9
          Packit 90a5c9
                
          このパラメータはフィルタが登録されるべきフィルタタイプの
          Packit 90a5c9
                数値を指定します。ほとんどの場合は、デフォルトの AP_FTYPE_RESOURCE で
          Packit 90a5c9
                十分です。フィルタがフィルタチェーンの別の場所で動作する必要がある
          Packit 90a5c9
                場合は、このパラメータを指定する必要があります。指定可能な値は
          Packit 90a5c9
                util_filter.h の AP_FTYPE_foo 定義を参照してください。
          Packit 90a5c9
          Packit 90a5c9
                
          disableenv=env
          Packit 90a5c9
          Packit 90a5c9
                
          設定されていた場合にフィルタを無効にするための環境変数を
          Packit 90a5c9
                指定します。
          Packit 90a5c9
          Packit 90a5c9
                
          enableenv=env
          Packit 90a5c9
          Packit 90a5c9
                
          このパラメータはフィルタが有効になるために設定されていなければ
          Packit 90a5c9
                ならない環境変数を指定します。
          Packit 90a5c9
              
          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          top
          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          説明:mod_ext_filter のオプションを設定
          Packit 90a5c9
          構文:ExtFilterOptions option [option] ...
          Packit 90a5c9
          デフォルト:ExtFilterOptions DebugLevel=0 NoLogStderr
          Packit 90a5c9
          コンテキスト:ディレクトリ
          Packit 90a5c9
          ステータス:Extension
          Packit 90a5c9
          モジュール:mod_ext_filter
          Packit 90a5c9
          Packit 90a5c9
              

          ExtFilterOptions ディレクティブは

          Packit 90a5c9
              mod_ext_filter の特別な処理用のオプションを
          Packit 90a5c9
              指定します。Option には以下のどれかを指定します。

          Packit 90a5c9
          Packit 90a5c9
              
          Packit 90a5c9
                
          DebugLevel=n
          Packit 90a5c9
          Packit 90a5c9
                
          Packit 90a5c9
                  DebugLevelmod_ext_filter 
          Packit 90a5c9
                  の生成するデバッグメッセージのレベルを設定できます。
          Packit 90a5c9
                  デフォルトでは、デバッグメッセージは生成されません。
          Packit 90a5c9
                  これは DebugLevel=0 と設定するのと同じです。
          Packit 90a5c9
                  数字が大きくなればなるほど、より多くのデバッグメッセージが
          Packit 90a5c9
                  生成され、サーバの性能は落ちます。数値の実際の意味は
          Packit 90a5c9
                  mod_ext_filter.c の先頭近くの DBGLVL_ 定数の
          Packit 90a5c9
                  定義で説明されています。
          Packit 90a5c9
          Packit 90a5c9
                  

          注: デバッグメッセージを Apache のエラーログに

          Packit 90a5c9
                  保存するようにするためには、core のディレクティブ 
          Packit 90a5c9
                  LogLevel 
          Packit 90a5c9
                  を使う必要があります。

          Packit 90a5c9
                
          Packit 90a5c9
          Packit 90a5c9
                
          LogStderr | NoLogStderr
          Packit 90a5c9
          Packit 90a5c9
                
          LogStderr キーワードは外部フィルタプログラムにより
          Packit 90a5c9
                標準エラー (訳注: stderr) に書かれたメッセージを
          Packit 90a5c9
                Apache のエラーログに保存するようにします。NoLogStderr
          Packit 90a5c9
                逆に保存しないようにします。
          Packit 90a5c9
              
          Packit 90a5c9
          Packit 90a5c9
              

          Packit 90a5c9
                ExtFilterOptions LogStderr DebugLevel=0
          Packit 90a5c9
              

          Packit 90a5c9
          Packit 90a5c9
              

          この例では、フィルタの標準出力に書かれたメッセージは

          Packit 90a5c9
              Apache のエラーログに保存されます。mod_ext_filter からは
          Packit 90a5c9
              デバッグメッセージは生成されません。

          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9

          翻訳済み言語:  en  |

          Packit 90a5c9
           fr  |
          Packit 90a5c9
           ja  |
          Packit 90a5c9
           ko 

          Packit 90a5c9
          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.
          Packit 90a5c9
          <script type="text/javascript">
          Packit 90a5c9
          var comments_shortname = 'httpd';
          Packit 90a5c9
          var comments_identifier = 'http://httpd.apache.org/docs/2.4/mod/mod_ext_filter.html';
          Packit 90a5c9
          (function(w, d) {
          Packit 90a5c9
              if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
          Packit 90a5c9
                  d.write('
          <\/div>');
          Packit 90a5c9
                  var s = d.createElement('script');
          Packit 90a5c9
                  s.type = 'text/javascript';
          Packit 90a5c9
                  s.async = true;
          Packit 90a5c9
                  s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
          Packit 90a5c9
                  (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
          Packit 90a5c9
              }
          Packit 90a5c9
              else { 
          Packit 90a5c9
                  d.write('
          Comments are disabled for this page at the moment.<\/div>');
          Packit 90a5c9
              }
          Packit 90a5c9
          })(window, document);
          Packit 90a5c9
          //--></script>
          Packit 90a5c9

          Copyright 2018 The Apache Software Foundation.
          この文書は Apache License, Version 2.0 のライセンスで提供されています。.

          Packit 90a5c9

          モジュール | ディレクティブ | FAQ | 用語 | サイトマップ

          <script type="text/javascript">
          Packit 90a5c9
          if (typeof(prettyPrint) !== 'undefined') {
          Packit 90a5c9
              prettyPrint();
          Packit 90a5c9
          }
          Packit 90a5c9
          //--></script>
          Packit 90a5c9
          </body></html>