1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 3<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><!-- 4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 5 This file is generated from xml source: DO NOT EDIT 6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 7 --> 8<title>mod_ext_filter - Apache HTTP サーバ</title> 9<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> 10<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> 11<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" /> 12<script src="/style/scripts/prettify.js" type="text/javascript"> 13</script> 14 15<link href="/images/favicon.ico" rel="shortcut icon" /></head> 16<body> 17<div id="page-header"> 18<p class="menu"><a href="/mod/">モジュール</a> | <a href="/mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">用語</a> | <a href="/sitemap.html">サイトマップ</a></p> 19<p class="apache">Apache HTTP サーバ バージョン 2.2</p> 20<img alt="" src="/images/feather.gif" /></div> 21<div class="up"><a href="./"><img title="<-" alt="<-" src="/images/left.gif" /></a></div> 22<div id="path"> 23<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="../">バージョン 2.2</a> > <a href="./">モジュール</a></div> 24<div id="page-content"> 25<div id="preamble"><h1>Apache モジュール mod_ext_filter</h1> 26<div class="toplang"> 27<p><span>翻訳済み言語: </span><a href="/en/mod/mod_ext_filter.html" hreflang="en" rel="alternate" title="English"> en </a> | 28<a href="/ja/mod/mod_ext_filter.html" title="Japanese"> ja </a> | 29<a href="/ko/mod/mod_ext_filter.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> 30</div> 31<div class="outofdate">この日本語訳はすでに古くなっている 32 可能性があります。 33 最近更新された内容を見るには英語版をご覧下さい。 34 </div> 35<table class="module"><tr><th><a href="module-dict.html#Description">説明:</a></th><td>レスポンスのボディをクライアントに送る前に外部プログラムで処理する</td></tr> 36<tr><th><a href="module-dict.html#Status">ステータス:</a></th><td>Extension</td></tr> 37<tr><th><a href="module-dict.html#ModuleIdentifier">モジュール識別子:</a></th><td>ext_filter_module</td></tr> 38<tr><th><a href="module-dict.html#SourceFile">ソースファイル:</a></th><td>mod_ext_filter.c</td></tr></table> 39<h3>概要</h3> 40 41 <p><code class="module"><a href="/mod/mod_ext_filter.html">mod_ext_filter</a></code> では <a href="/filter.html">フィルタ</a> 42 の慣れ親しんだ単純なプログラミングモデルが提供されます。このモジュールを 43 使えば、標準入力から読み込んで、標準出力に書き出すプログラム 44 (すなわち Unix 形式のフィルタコマンド) を Apache のフィルタにすることが 45 できます。このフィルタの機構は、Apache API 向けに書かれた Apache 46 サーバプロセス内で実行される専用のフィルタよりもずっと遅いですが、 47 以下のような利点もあります。</p> 48 49 <ul> 50 <li>ずっとシンプルなプログラミングモデル</li> 51 52 <li>プログラムが標準入力から読んで標準出力に書くものである限り、 53 どんなプログラム言語やスクリプト言語でも使うことができる</li> 54 55 <li>既存のプログラムを変更することなく Apache のフィルタとして 56 使うことができる</li> 57 </ul> 58 59 <p>性能の問題により実運用に適さないとしても、フィルタのプロトタイプ用の 60 環境としては <code class="module"><a href="/mod/mod_ext_filter.html">mod_ext_filter</a></code> は使えます。</p> 61 62</div> 63<div id="quickview"><h3 class="directives">ディレクティブ</h3> 64<ul id="toc"> 65<li><img alt="" src="/images/down.gif" /> <a href="#extfilterdefine">ExtFilterDefine</a></li> 66<li><img alt="" src="/images/down.gif" /> <a href="#extfilteroptions">ExtFilterOptions</a></li> 67</ul> 68<h3>トピック</h3> 69<ul id="topics"> 70<li><img alt="" src="/images/down.gif" /> <a href="#examples">例</a></li> 71</ul><h3>参照</h3> 72<ul class="seealso"> 73<li><a href="/filter.html">フィルタ</a></li> 74</ul><ul class="seealso"><li><a href="#comments_section">コメント</a></li></ul></div> 75<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 76<div class="section"> 77<h2><a name="examples" id="examples">例</a></h2> 78 79 <h3>他のタイプのレスポンスから HTML を生成する</h3> 80 <div class="example"><p><code> 81 # mod_ext_filter directive to define a filter<br /> 82 # to HTML-ize text/c files using the external<br /> 83 # program /usr/bin/enscript, with the type of<br /> 84 # the result set to text/html<br /> 85 ExtFilterDefine c-to-html mode=output \<br /> 86 <span class="indent"> 87 intype=text/c outtype=text/html \<br /> 88 cmd="/usr/bin/enscript --color -W html -Ec -o - -"<br /> 89 </span> 90 <br /> 91 <Directory "/export/home/trawick/apacheinst/htdocs/c"><br /> 92 <span class="indent"> 93 # core directive to cause the new filter to<br /> 94 # be run on output<br /> 95 SetOutputFilter c-to-html<br /> 96 <br /> 97 # mod_mime directive to set the type of .c<br /> 98 # files to text/c<br /> 99 AddType text/c .c<br /> 100 <br /> 101 # mod_ext_filter directive to set the debug<br /> 102 # level just high enough to see a log message<br /> 103 # per request showing the configuration in force<br /> 104 ExtFilterOptions DebugLevel=1<br /> 105 </span> 106 </Directory> 107 </code></p></div> 108 109 110 <h3>コンテントエンコーディングのフィルタを実装する</h3> 111 <p>注: この gzip の例はデモ用です。実用的な実装は 112 <code class="module"><a href="/mod/mod_deflate.html">mod_deflate</a></code> を参照してください。</p> 113 114 <div class="example"><p><code> 115 # mod_ext_filter directive to define the external filter<br /> 116 ExtFilterDefine gzip mode=output cmd=/bin/gzip<br /> 117 <br /> 118 <Location /gzipped><br /> 119 <span class="indent"> 120 # core directive to cause the gzip filter to be<br /> 121 # run on output<br /> 122 SetOutputFilter gzip<br /> 123 <br /> 124 # mod_header directive to add<br /> 125 # "Content-Encoding: gzip" header field<br /> 126 Header set Content-Encoding gzip<br /> 127 </span> 128 </Location> 129 </code></p></div> 130 131 132 <h3>サーバを遅くする</h3> 133 <div class="example"><p><code> 134 # mod_ext_filter directive to define a filter<br /> 135 # which runs everything through cat; cat doesn't<br /> 136 # modify anything; it just introduces extra pathlength<br /> 137 # and consumes more resources<br /> 138 ExtFilterDefine slowdown mode=output cmd=/bin/cat \<br /> 139 <span class="indent"> 140 preservescontentlength<br /> 141 </span> 142 <br /> 143 <Location /><br /> 144 <span class="indent"> 145 # core directive to cause the slowdown filter to<br /> 146 # be run several times on output<br /> 147 #<br /> 148 SetOutputFilter slowdown;slowdown;slowdown<br /> 149 </span> 150 </Location> 151 </code></p></div> 152 153 154 <h3>sed を使って応答中のテキストを置換する</h3> 155 <div class="example"><p><code> 156 # mod_ext_filter directive to define a filter which<br /> 157 # replaces text in the response<br /> 158 #<br /> 159 ExtFilterDefine fixtext mode=output intype=text/html \<br /> 160 <span class="indent"> 161 cmd="/bin/sed s/verdana/arial/g"<br /> 162 </span> 163 <br /> 164 <Location /><br /> 165 <span class="indent"> 166 # core directive to cause the fixtext filter to<br /> 167 # be run on output<br /> 168 SetOutputFilter fixtext<br /> 169 </span> 170 </Location> 171 </code></p></div> 172 173 174 <h3>別のフィルタのトレース</h3> 175 <div class="example"><p><code> 176 # Trace the data read and written by mod_deflate<br /> 177 # for a particular client (IP 192.168.1.31)<br /> 178 # experiencing compression problems.<br /> 179 # This filter will trace what goes into mod_deflate.<br /> 180 ExtFilterDefine tracebefore \<br /> 181 <span class="indent"> 182 cmd="/bin/tracefilter.pl /tmp/tracebefore" \<br /> 183 EnableEnv=trace_this_client<br /> 184 </span> 185 <br /> 186 # This filter will trace what goes after mod_deflate.<br /> 187 # Note that without the ftype parameter, the default<br /> 188 # filter type of AP_FTYPE_RESOURCE would cause the<br /> 189 # filter to be placed *before* mod_deflate in the filter<br /> 190 # chain. Giving it a numeric value slightly higher than<br /> 191 # AP_FTYPE_CONTENT_SET will ensure that it is placed<br /> 192 # after mod_deflate.<br /> 193 ExtFilterDefine traceafter \<br /> 194 <span class="indent"> 195 cmd="/bin/tracefilter.pl /tmp/traceafter" \<br /> 196 EnableEnv=trace_this_client ftype=21<br /> 197 </span> 198 <br /> 199 <Directory /usr/local/docs><br /> 200 <span class="indent"> 201 SetEnvIf Remote_Addr 192.168.1.31 trace_this_client<br /> 202 SetOutputFilter tracebefore;deflate;traceafter<br /> 203 </span> 204 </Directory> 205 </code></p></div> 206 207 <div class="example"><h3>データをトレースするフィルタ:</h3><p><code> 208 #!/usr/local/bin/perl -w<br /> 209 use strict;<br /> 210 <br /> 211 open(SAVE, ">$ARGV[0]")<br /> 212 <span class="indent"> 213 or die "can't open $ARGV[0]: $?";<br /> 214 </span> 215 <br /> 216 while (<STDIN>) {<br /> 217 <span class="indent"> 218 print SAVE $_;<br /> 219 print $_;<br /> 220 </span> 221 }<br /> 222 <br /> 223 close(SAVE); 224 </code></p></div> 225 226</div> 227<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 228<div class="directive-section"><h2><a name="ExtFilterDefine" id="ExtFilterDefine">ExtFilterDefine</a> <a name="extfilterdefine" id="extfilterdefine">ディレクティブ</a></h2> 229<table class="directive"> 230<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>外部フィルタを定義</td></tr> 231<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ExtFilterDefine <var>filtername</var> <var>parameters</var></code></td></tr> 232<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル</td></tr> 233<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr> 234<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_ext_filter</td></tr> 235</table> 236 <p><code class="directive">ExtFilterDefine</code> は、実行するプログラムや 237 引数など、外部フィルタの特性を定義します。</p> 238 239 <p><var>filtername</var> は定義するフィルタの名前を指定します。 240 この名前は後で <code class="directive"><a href="/mod/core.html#setoutputfilter">SetOutputFilter</a></code> 241 ディレクティブで指定できます。名前は登録されるすべてのフィルタで 242 一意でなくてはなりません。<em>現時点では、フィルタの登録 API からは 243 エラーは報告されません。ですから、重複する名前を使ってしまったときでも 244 ユーザにはそのことは報告されません。</em></p> 245 246 <p>続くパラメータの順番は関係無く、それらは実行する外部コマンドと、 247 他の特性を定義します。<code>cmd=</code> だけが必須のパラメータです。 248 指定可能なパラメータは:</p> 249 250 <dl> 251 <dt><code>cmd=<var>cmdline</var></code></dt> 252 253 <dd><code>cmd=</code> キーワードは実行する外部コマンドを指定します。 254 プログラム名の後に引数がある場合は、コマンド行は引用符で囲む 255 必要があります (<em>例えば</em>、<code>cmd="<var>/bin/mypgm</var> 256 <var>arg1</var> <var>arg2</var>"</code> のように)。プログラムは 257 シェル経由でなく、直接実行されますので、通常のシェル用の 258 エスケープは必要ありません。プログラムの引数は空白で区切られます。 259 プログラムの引数の一部となる必要のある空白はバックスペースでエスケープ 260 できます。引数の一部になるバックスラッシュはバックスラッシュで 261 エスケープする必要があります。標準の CGI 環境変数に加えて、 262 環境変数 DOCUMENT_URI, DOCUMENT_PATH_INFO, and 263 QUERY_STRING_UNESCAPED がプログラムのために設定されます。</dd> 264 265 <dt><code>mode=<var>mode</var></code></dt> 266 267 <dd>応答を処理するフィルタには <code>mode=output</code> (デフォルト) 268 を使います。リクエストを処理するフィルタには <code>mode=input</code> 269 を使います。<code>mode=input</code> は Apache 2.1 以降で使用できます。</dd> 270 271 <dt><code>intype=<var>imt</var></code></dt> 272 273 <dd>このパラメータはフィルタされるべきドキュメントの 274 インターネットメディアタイプ (<em>すなわち</em>、MIME タイプ) を 275 指定します。デフォルトではすべてのドキュメントがフィルタされます。 276 <code>intype=</code> が指定されていれば、フィルタは指定されていない 277 ドキュメントには適用されなくなります。</dd> 278 279 <dt><code>outtype=<var>imt</var></code></dt> 280 281 <dd>このパラメータはフィルタされたドキュメントの 282 インターネットメディアタイプ (<em>すなわち</em>、MIME タイプ) を 283 指定します。フィルタ動作にともなってインターネットメディアタイプが 284 変わる場合に有用です。デフォルトではインターネットメディアタイプは 285 変更されません。</dd> 286 287 <dt><code>PreservesContentLength</code></dt> 288 289 <dd><code>PreservesContentLength</code> キーワードはフィルタが 290 content length <span class="transnote">(<em>訳注:</em> コンテントの長さ)</span> 291 を変更しないということを指定します。ほとんどのフィルタは 292 content length を変更するため、これはデフォルトではありません。 293 フィルタが長さを変えないときは、このキーワードを指定すると 294 よいでしょう。</dd> 295 296 <dt><code>ftype=<var>filtertype</var></code></dt> 297 298 <dd>このパラメータはフィルタが登録されるべきフィルタタイプの 299 数値を指定します。ほとんどの場合は、デフォルトの AP_FTYPE_RESOURCE で 300 十分です。フィルタがフィルタチェーンの別の場所で動作する必要がある 301 場合は、このパラメータを指定する必要があります。指定可能な値は 302 util_filter.h の AP_FTYPE_foo 定義を参照してください。</dd> 303 304 <dt><code>disableenv=<var>env</var></code></dt> 305 306 <dd>設定されていた場合にフィルタを無効にするための環境変数を 307 指定します。</dd> 308 309 <dt><code>enableenv=<var>env</var></code></dt> 310 311 <dd>このパラメータはフィルタが有効になるために設定されていなければ 312 ならない環境変数を指定します。</dd> 313 </dl> 314 315</div> 316<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 317<div class="directive-section"><h2><a name="ExtFilterOptions" id="ExtFilterOptions">ExtFilterOptions</a> <a name="extfilteroptions" id="extfilteroptions">ディレクティブ</a></h2> 318<table class="directive"> 319<tr><th><a href="directive-dict.html#Description">説明:</a></th><td><code class="module"><a href="/mod/mod_ext_filter.html">mod_ext_filter</a></code> のオプションを設定</td></tr> 320<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ExtFilterOptions <var>option</var> [<var>option</var>] ...</code></td></tr> 321<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ExtFilterOptions DebugLevel=0 NoLogStderr</code></td></tr> 322<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>ディレクトリ</td></tr> 323<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr> 324<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_ext_filter</td></tr> 325</table> 326 <p><code class="directive">ExtFilterOptions</code> ディレクティブは 327 <code class="module"><a href="/mod/mod_ext_filter.html">mod_ext_filter</a></code> の特別な処理用のオプションを 328 指定します。<var>Option</var> には以下のどれかを指定します。</p> 329 330 <dl> 331 <dt><code>DebugLevel=<var>n</var></code></dt> 332 333 <dd> 334 <code>DebugLevel</code> で <code class="module"><a href="/mod/mod_ext_filter.html">mod_ext_filter</a></code> 335 の生成するデバッグメッセージのレベルを設定できます。 336 デフォルトでは、デバッグメッセージは生成されません。 337 これは <code>DebugLevel=0</code> と設定するのと同じです。 338 数字が大きくなればなるほど、より多くのデバッグメッセージが 339 生成され、サーバの性能は落ちます。数値の実際の意味は 340 <code>mod_ext_filter.c</code> の先頭近くの DBGLVL_ 定数の 341 定義で説明されています。 342 343 <p>注: デバッグメッセージを Apache のエラーログに 344 保存するようにするためには、core のディレクティブ 345 <code class="directive"><a href="/mod/core.html#loglevel">LogLevel</a></code> 346 を使う必要があります。</p> 347 </dd> 348 349 <dt><code>LogStderr | NoLogStderr</code></dt> 350 351 <dd><code>LogStderr</code> キーワードは外部フィルタプログラムにより 352 標準エラー <span class="transnote">(<em>訳注:</em> stderr)</span> に書かれたメッセージを 353 Apache のエラーログに保存するようにします。<code>NoLogStderr</code> は 354 逆に保存しないようにします。</dd> 355 </dl> 356 357 <div class="example"><h3>例</h3><p><code> 358 ExtFilterOptions LogStderr DebugLevel=0 359 </code></p></div> 360 361 <p>この例では、フィルタの標準出力に書かれたメッセージは 362 Apache のエラーログに保存されます。<code class="module"><a href="/mod/mod_ext_filter.html">mod_ext_filter</a></code> からは 363 デバッグメッセージは生成されません。</p> 364 365</div> 366</div> 367<div class="bottomlang"> 368<p><span>翻訳済み言語: </span><a href="/en/mod/mod_ext_filter.html" hreflang="en" rel="alternate" title="English"> en </a> | 369<a href="/ja/mod/mod_ext_filter.html" title="Japanese"> ja </a> | 370<a href="/ko/mod/mod_ext_filter.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> 371</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">コメント</a></h2><div class="warning"><strong>Notice:</strong><br />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 <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div> 372<script type="text/javascript"><!--//--><![CDATA[//><!-- 373var comments_shortname = 'httpd'; 374var comments_identifier = 'http://httpd.apache.org/docs/2.2/mod/mod_ext_filter.html'; 375(function(w, d) { 376 if (w.location.hostname.toLowerCase() == "httpd.apache.org") { 377 d.write('<div id="comments_thread"><\/div>'); 378 var s = d.createElement('script'); 379 s.type = 'text/javascript'; 380 s.async = true; 381 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; 382 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 383 } 384 else { 385 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); 386 } 387})(window, document); 388//--><!]]></script></div><div id="footer"> 389<p class="apache">Copyright 2013 The Apache Software Foundation.<br />この文書は <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> のライセンスで提供されています。.</p> 390<p class="menu"><a href="/mod/">モジュール</a> | <a href="/mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">用語</a> | <a href="/sitemap.html">サイトマップ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- 391if (typeof(prettyPrint) !== 'undefined') { 392 prettyPrint(); 393} 394//--><!]]></script> 395</body></html>