blob: cd392c2c0b0fde42b064488521e0eabc3a301c37 [file] [log] [blame]
<?xml version="1.0" encoding="EUC-KR" ?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ko.xsl"?>
<!-- English Revision: 1.16 -->
<!--
Copyright 2004 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<modulesynopsis metafile="mod_ext_filter.xml.meta">
<name>mod_ext_filter</name>
<description>ÀÀ´ä ³»¿ëÀ» ¿ÜºÎ ÇÁ·Î±×·¥À¸·Î ó¸®ÇÑ ÈÄ Å¬¶óÀ̾ðÆ®·Î
º¸³½´Ù</description>
<status>Extension</status>
<sourcefile>mod_ext_filter.c</sourcefile>
<identifier>ext_filter_module</identifier>
<summary>
<p><module>mod_ext_filter</module>¸¦ »ç¿ëÇÏ¸é °£´ÜÇÏ°í Àͼ÷ÇÑ
¹æ¹ýÀ¸·Î <a href="../filter.html">ÇÊÅÍ</a>¸¦ ¸¸µé ¼ö ÀÖ´Ù.
Ç¥ÁØÀԷ¿¡¼­ Àаí Ç¥ÁØÃâ·Â¿¡ ¾²´Â ÇÁ·Î±×·¥(Áï, À¯´Ð½º½Ä
ÇÊÅÍ ¸í·É¾î)À» ¾ÆÆÄÄ¡ ÇÊÅÍ·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ·± ÇÊÅÍ´Â
¾ÆÆÄÄ¡ API·Î ¾²¿©Áö°í ¾ÆÆÄÄ¡ ¼­¹ö ÇÁ·Î¼¼½º ¾È¿¡¼­ ½ÇÇàµÇ´Â
ÇÊÅÍ¿¡ ºñÇØ ¸Å¿ì ´À¸®Áö¸¸, ´ÙÀ½°ú °°Àº ÀåÁ¡ÀÌ ÀÖ´Ù:</p>
<ul>
<li>ÇÁ·Î±×·¡¹Ö ¸ðµ¨ÀÌ ¸Å¿ì °£´ÜÇÏ´Ù</li>
<li>ÇÁ·Î±×·¥ÀÌ Ç¥ÁØÀԷ¿¡¼­ Àаí Ç¥ÁØÃâ·Â¿¡ ¾µ ¼ö¸¸ ÀÖ´Ù¸é
¾î¶² ÇÁ·Î±×·¡¹Ö/½ºÅ©¸³Æ® ¾ð¾î¶óµµ »ç¿ëÇÒ ¼ö ÀÖ´Ù</li>
<li>ÀÌ¹Ì ÀÖ´Â ÇÁ·Î±×·¥À» ¼öÁ¤¾øÀÌ ¾ÆÆÄÄ¡ ÇÊÅÍ·Î »ç¿ëÇÒ
¼ö ÀÖ´Ù</li>
</ul>
<p>½ÇÁ¦ »ç¿ëÇϱ⿡´Â ¼º´ÉÀÌ ¶³¾îÁöÁö¸¸,
<module>mod_ext_filter</module>¸¦ »ç¿ëÇÏ¿© ÇÊÅ͸¦ »¡¸® ¸¸µé¾îº¼
¼ö ÀÖ´Ù.</p>
</summary>
<seealso><a href="../filter.html">ÇÊÅÍ</a></seealso>
<section id="examples"><title>¿¹Á¦</title>
<section><title>´Ù¸¥ typeÀÇ ÀÀ´äÀ» HTML·Î ¸¸µç´Ù</title>
<example>
# mod_ext_filter Áö½Ã¾î¸¦ °¡Áö°í<br />
# ¿ÜºÎ ÇÁ·Î±×·¥ /usr/bin/enscript¸¦ »ç¿ëÇÏ¿©<br />
# ¹®¼­ÆÄÀÏ°ú text/c ÆÄÀÏÀ» HTML·Î ¸¸µé°í °á°úÀÇ<br />
# typeÀ» text/html·Î º¯°æÇÏ´Â ÇÊÅ͸¦ Á¤ÀÇÇÑ´Ù<br />
ExtFilterDefine c-to-html mode=output \<br />
<indent>
intype=text/c outtype=text/html \<br />
cmd="/usr/bin/enscript --color -W html -Ec -o - -"<br />
</indent>
<br />
&lt;Directory "/export/home/trawick/apacheinst/htdocs/c"&gt;<br />
<indent>
# Ãâ·Â¿¡ »õ·Î¿î ÇÊÅ͸¦ ½ÇÇàÇÏ´Â core Áö½Ã¾î<br />
SetOutputFilter c-to-html<br />
<br />
# .c ÆÄÀÏÀÇ typeÀ» text/c·Î ¸¸µå´Â mod_mime<br />
# Áö½Ã¾î<br />
AddType text/c .c<br />
<br />
# µð¹ö±× ¼öÁØÀ» ³ô¿©¼­ ¿äû¸¶´Ù ÇöÀç ¼³Á¤À»<br />
# ¾Ë·ÁÁÖ´Â ·Î±×¹®À» ±â·ÏÇÏ´Â mod_ext_filter<br />
# Áö½Ã¾î<br />
ExtFilterOptions DebugLevel=1<br />
</indent>
&lt;/Directory&gt;
</example>
</section>
<section><title>content ÀÎÄÚµù ÇÊÅÍ ±¸ÇöÇϱâ</title>
<p>Note: ¾Æ·¡ gzip ¿¹Á¦´Â ´ÜÁö ¼³¸íÀ» ¿¹·Î µç °ÍÀÌ´Ù.
½ÇÁ¦ ¼­ºñ½º¿¡ »ç¿ëÇÏ·Á¸é <module>mod_deflate</module>¸¦
Âü°íÇÏ±æ ¹Ù¶õ´Ù.</p>
<example>
# ¿ÜºÎ ÇÊÅ͸¦ Á¤ÀÇÇÏ´Â mod_ext_filter Áö½Ã¾î<br />
ExtFilterDefine gzip mode=output cmd=/bin/gzip<br />
<br />
&lt;Location /gzipped&gt;<br />
<indent>
# Ãâ·ÂÇÒ¶§ gzip ÇÊÅ͸¦ ½ÇÇàÇÏ´Â core Áö½Ã¾î<br />
SetOutputFilter gzip<br />
<br />
# "Content-Encoding: gzip" Çì´õ¸¦ Ãß°¡ÇÏ´Â<br />
# mod_header Áö½Ã¾î<br />
Header set Content-Encoding gzip<br />
</indent>
&lt;/Location&gt;
</example>
</section>
<section><title>¼­¹ö¸¦ ´À¸®°Ô Çϱâ</title>
<example>
# catÀ¸·Î ¸ðµç ³»¿ëÀ» Åë°úÇÏ´Â ÇÊÅ͸¦ Á¤ÀÇÇÏ´Â<br />
# mod_ext_filter Áö½Ã¾î; catÀº ¾Æ¹«°Íµµ ¼öÁ¤ÇÏÁö<br />
# ¾Ê´Â´Ù; ´ÜÁö 󸮰æ·Î¸¦ ±æ°Ô ÇÏ¿© ÀÚ¿øÀ» ´õ ¼Ò¸ðÇÑ´Ù<br />
ExtFilterDefine slowdown mode=output cmd=/bin/cat \<br />
<indent>
preservescontentlength<br />
</indent>
<br />
&lt;Location /&gt;<br />
<indent>
# Ãâ·ÂÇÒ¶§ slowdown ÇÊÅ͸¦ ¿©·¯¹ø ½ÇÇàÇÏ´Â core Áö½Ã¾î<br />
#<br />
SetOutputFilter slowdown;slowdown;slowdown<br />
</indent>
&lt;/Location&gt;
</example>
</section>
<section><title>sed¸¦ »ç¿ëÇÏ¿© ÀÀ´ä¿¡¼­ ±ÛÀ» ´ëüÇϱâ</title>
<example>
# ÀÀ´ä¿¡¼­ ±ÛÀ» ´ëüÇÏ´Â ÇÊÅ͸¦ Á¤ÀÇÇÏ´Â<br />
# mod_ext_filter Áö½Ã¾î<br />
#<br />
ExtFilterDefine fixtext mode=output intype=text/html \<br />
<indent>
cmd="/bin/sed s/verdana/arial/g"<br />
</indent>
<br />
&lt;Location /&gt;<br />
<indent>
# Ãâ·ÂÇÒ¶§ fixtext ÇÊÅ͸¦ ½ÇÇàÇÏ´Â core Áö½Ã¾î<br />
SetOutputFilter fixtext<br />
</indent>
&lt;/Location&gt;
</example>
</section>
<section><title>´Ù¸¥ ÇÊÅ͸¦ ÃßÀûÇϱâ</title>
<example>
# ¾ÐÃà ¹®Á¦°¡ Àִ ƯÁ¤ Ŭ¶óÀ̾ðÆ®(IP 192.168.1.31)¿¡<br />
# ´ëÇØ mod_deflate°¡ ÀÐ°í ¾²´Â ÀڷḦ ÃßÀûÇÑ´Ù.<br />
# ÀÌ ÇÊÅÍ´Â mod_deflate·Î º¸³»±â Àü ÀڷḦ ÃßÀûÇÑ´Ù.<br />
ExtFilterDefine tracebefore \<br />
<indent>
cmd="/bin/tracefilter.pl /tmp/tracebefore" \<br />
EnableEnv=trace_this_client<br />
</indent>
<br />
# ÀÌ ÇÊÅÍ´Â mod_deflate¿¡¼­ ³ª¿À´Â ÀڷḦ ÃßÀûÇÑ´Ù.<br />
# ftype ÆĶó¹ÌÅ͸¦ »ç¿ëÇÏÁö¾Ê´Â °æ¿ì, ±âº» ÇÊÅÍÇü<br />
# AP_FTYPE_RESOURCE´Â ÇÊÅÍ ¼ø¼­¸¦ mod_deflate *ÀÌÀü¿¡*<br />
# µÐ´Ù. AP_FTYPE_CONTENT_SET º¸´Ù Á¶±Ý ³ôÀº ¼ýÀÚ°ªÀ»<br />
# ÁöÁ¤Çϸé mod_deflate ÀÌÈÄ¿¡ ½ÇÇàÇÑ´Ù.<br />
ExtFilterDefine traceafter \<br />
<indent>
cmd="/bin/tracefilter.pl /tmp/traceafter" \<br />
EnableEnv=trace_this_client ftype=21<br />
</indent>
<br />
&lt;Directory /usr/local/docs&gt;<br />
<indent>
SetEnvIf Remote_Addr 192.168.1.31 trace_this_client<br />
SetOutputFilter tracebefore;deflate;traceafter<br />
</indent>
&lt;/Directory&gt;
</example>
<example><title>´ÙÀ½Àº ÀڷḦ ÃßÀûÇÏ´Â ÇÊÅÍÀÌ´Ù:</title>
#!/usr/local/bin/perl -w<br />
use strict;<br />
<br />
open(SAVE, "&gt;$ARGV[0]")<br />
<indent>
or die "can't open $ARGV[0]: $?";<br />
</indent>
<br />
while (&lt;STDIN&gt;) {<br />
<indent>
print SAVE $_;<br />
print $_;<br />
</indent>
}<br />
<br />
close(SAVE);
</example>
</section>
</section> <!-- /Examples -->
<directivesynopsis>
<name>ExtFilterDefine</name>
<description>¿ÜºÎ ÇÊÅ͸¦ Á¤ÀÇÇÑ´Ù</description>
<syntax>ExtFilterDefine <var>filtername</var> <var>parameters</var></syntax>
<contextlist><context>server config</context></contextlist>
<usage>
<p><directive>ExtFilterDefine</directive> Áö½Ã¾î´Â ¿ÜºÎ
ÇÊÅÍÀÇ ¼ºÁú°ú ½ÇÇàÇÒ ÇÁ·Î±×·¥, ¾Æ±Ô¸ÕÆ®¸¦ Á¤ÀÇÇÑ´Ù.</p>
<p><var>filtername</var>Àº Á¤ÀÇÇÒ ÇÊÅÍ À̸§À» ÁöÁ¤ÇÑ´Ù.
ÀÌ À̸§À» SetOutputFilter Áö½Ã¾î¿¡¼­ »ç¿ëÇÑ´Ù. µî·ÏÇÑ ¸ðµç
ÇÊÅ͵鰣¿¡ À̸§ÀÌ °ãÄ¡¸é ¾ÈµÈ´Ù. <em>ÇöÀç ÇÊÅ͵î·Ï API´Â
¿À·ù¸¦ º¸°íÇÏÁö ¾Ê´Â´Ù. ±×·¡¼­ »ç¿ëÀÚ´Â À̸§ÀÌ °ãÄ¡´Â ¹®Á¦¸¦
¾ËÁö ¸øÇÑ´Ù.</em></p>
<p>½ÇÇàÇÒ ¿ÜºÎ ¸í·É¾î¿Í ´Ù¸¥ ¼ºÁúÀ» Á¤ÀÇÇÏ´Â ³ª¸ÓÁö ¾Æ±Ô¸ÕÆ®´Â
¾î¶² ¼ø¼­·Î ³ª¿Íµµ °¡´ÉÇÏ´Ù. ´Ü, <code>cmd=</code> ÆĶó¹ÌÅÍ´Â
¹Ýµå½Ã ÇÊ¿äÇÏ´Ù. »ç¿ëÇÒ ¼ö ÀÖ´Â ÆĶó¹ÌÅÍ´Â ´ÙÀ½°ú °°´Ù:</p>
<dl>
<dt><code>cmd=<var>cmdline</var></code></dt>
<dd><code>cmd=</code> Å°¿öµå´Â ½ÇÇàÇÒ ¿ÜºÎ ¸í·É¾î¸¦ ÁöÁ¤ÇÑ´Ù.
ÇÁ·Î±×·¥¸í µÚ¿¡ ¾Æ±Ô¸ÕÆ®°¡ ÀÖ´Ù¸é ¸í·ÉÇàÀ» ½Öµû¿ÈÇ¥·Î
¹­¾î¾ß ÇÑ´Ù (<em>¿¹¸¦ µé¾î</em>,
<code>cmd="<var>/bin/mypgm</var> <var>arg1</var>
<var>arg2</var>"</code>). ½©À» °ÅÄ¡Áö¾Ê°í Á÷Á¢ ÇÁ·Î±×·¥À»
½ÇÇàÇϱ⶧¹®¿¡ ÀϹÝÀûÀÎ ½© µû¿ÈÇ¥´Â ÇÊ¿ä¾ø´Ù. ÇÁ·Î±×·¥
¾Æ±Ô¸ÕÆ®µéÀº °ø¹éÀ¸·Î ±¸ºÐÇÑ´Ù. ÇÁ·Î±×·¥ ¾Æ±Ô¸ÕÆ®¿¡ °ø¹éÀÌ
ÀÖ´Ù¸é °ø¹é ¾Õ¿¡ ¹é½½·¡½¬·Î »ç¿ëÇØ¾ß ÇÑ´Ù. ¹é½½·¡½¬°¡
¾Æ±Ô¸ÕÆ®ÀÇ ÀϺζó¸é ¹é½½·¡½¬¸¦ µÎ¹ø »ç¿ëÇØ¾ß ÇÑ´Ù. ÇÁ·Î±×·¥À»
½ÇÇàÇÒ¶§ Ç¥ÁØ CGI ȯ°æº¯¼ö¿Í Ãß°¡·Î DOCUMENT_URI,
DOCUMENT_PATH_INFO, QUERY_STRING_UNESCAPED º¯¼ö¸¦ ¼³Á¤ÇÑ´Ù.</dd>
<dt><code>mode=<var>mode</var></code></dt>
<dd>ÀÀ´äÀ» ó¸®ÇÏ´Â ÇÊÅÍ´Â (±âº»°ªÀÎ) <code>mode=output</code>À»
»ç¿ëÇÑ´Ù. ¿äûÀ» ó¸®ÇÏ´Â ÇÊÅÍ´Â <code>mode=input</code>À»
»ç¿ëÇÑ´Ù. <code>mode=input</code>Àº ¾ÆÆÄÄ¡ 2.1¿¡ Ãß°¡µÇ¾ú´Ù.</dd>
<dt><code>intype=<var>imt</var></code></dt>
<dd>ÀÌ ÆĶó¹ÌÅÍ´Â ÇÊÅͷΠó¸®ÇÒ ¹®¼­ÀÇ ÀÎÅÍ³Ý media
type(<em>Áï</em>, MIME type)À» ÁöÁ¤ÇÑ´Ù. ±âº»ÀûÀ¸·Î ¸ðµç
¹®¼­¸¦ ÇÊÅͷΠó¸®ÇÑ´Ù. <code>intype=</code>À» ÁöÁ¤Çϸé
´Ù¸¥ typeÀÇ ¹®¼­´Â ÇÊÅͷΠó¸®ÇÏÁö ¾Ê´Â´Ù.</dd>
<dt><code>outtype=<var>imt</var></code></dt>
<dd>ÀÌ ÆĶó¹ÌÅÍ´Â ÇÊÅͷΠó¸®ÇÑ ¹®¼­ÀÇ ÀÎÅÍ³Ý media
type(<em>Áï</em>, MIME type)À» ÁöÁ¤ÇÑ´Ù. ÇÊÅÍó¸® ÀÛ¾÷Áß¿¡
ÀÎÅÍ³Ý media typeÀ» º¯°æÇÒ¶§ À¯¿ëÇÏ´Ù. ±âº»ÀûÀ¸·Î, ÀÎÅͳÝ
media typeÀº º¯ÇÏÁö ¾Ê´Â´Ù.</dd>
<dt><code>PreservesContentLength</code></dt>
<dd><code>PreservesContentLength</code> Å°¿öµå´Â ÇÊÅÍ°¡
content length¸¦ À¯ÁöÇϵµ·Ï ÇÑ´Ù. ´ëºÎºÐÀÇ ÇÊÅÍ°¡ content
length¸¦ º¯°æÇϹǷΠÀÌ Å°¿öµå´Â ±âº»°ªÀÌ ¾Æ´Ï´Ù. ÇÊÅÍ°¡
±æÀ̸¦ À¯ÁöÇÒ¶§¸¸ ÀÌ Å°¿öµå¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.</dd>
<dt><code>ftype=<var>filtertype</var></code></dt>
<dd>ÀÌ ÆĶó¹ÌÅÍ´Â ÇÊÅÍ Á¾·ù¿¡ ´ëÇÑ ¼ýÀÚ°ªÀ» ÁöÁ¤ÇÑ´Ù.
´ëºÎºÐÀÇ °æ¿ì ±âº»°ªÀÎ AP_FTYPE_RESOURCE°¡ Àû´çÇÏ´Ù.
ÇÊÅ͸¦ ½ÇÇàÇÏ´Â ¼ø¼­°¡ ÀÚ¿øÇÊÅÍ¿Í ´Þ¶ó¾ßÇÏ´Â °æ¿ì ÀÌ
ÆĶó¹ÌÅÍ°¡ ÇÊ¿äÇÏ´Ù. Àû´çÇÑ °ªÀ» ¾Ë·Á¸é util_filter.h¿¡
ÀÖ´Â AP_FTYPE_* Á¤ÀǸ¦ Âü°íÇ϶ó.</dd>
<dt><code>disableenv=<var>env</var></code></dt>
<dd>ÀÌ ÆĶó¹ÌÅÍ·Î ¼³Á¤ÇÑ È¯°æº¯¼ö°¡ Á¤ÀǵǾú´Ù¸é ÇÊÅ͸¦
»ç¿ëÇÏÁö ¾Ê´Â´Ù.</dd>
<dt><code>enableenv=<var>env</var></code></dt>
<dd>ÀÌ ÆĶó¹ÌÅÍ·Î ¼³Á¤ÇÑ È¯°æº¯¼ö°¡ Á¤ÀÇµÈ °æ¿ì ÇÊÅ͸¦
»ç¿ëÇÑ´Ù.</dd>
</dl>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>ExtFilterOptions</name>
<description><module>mod_ext_filter</module> ¿É¼ÇÀ» ¼³Á¤ÇÑ´Ù</description>
<syntax>ExtFilterOptions <var>option</var> [<var>option</var>] ...</syntax>
<default>ExtFilterOptions DebugLevel=0 NoLogStderr</default>
<contextlist><context>directory</context></contextlist>
<usage>
<p><directive>ExtFilterOptions</directive> Áö½Ã¾î´Â
<module>mod_ext_filter</module>ÀÇ Æ¯º°ÇÑ Ã³¸®¿É¼ÇÀ» ÁöÁ¤ÇÑ´Ù.
<var>Option</var>Àº ´ÙÀ½Áß Çϳª´Ù.</p>
<dl>
<dt><code>DebugLevel=<var>n</var></code></dt>
<dd>
<code>DebugLevel</code> Å°¿öµå´Â
<module>mod_ext_filter</module>°¡ ±â·ÏÇÏ´Â µð¹ö±× ¹®±¸
¼öÁØÀ» Á¤ÇÑ´Ù. ±âº»°ªÀº µð¹ö±×¹®À» ±â·ÏÇÏÁö ¾Ê´Â´Ù.
ÀÌ´Â <code>DebugLevel=0</code>°ú °°´Ù. ³ôÀº ¼ýÀÚ¸¦
»ç¿ëÇÒ¼ö·Ï, ´õ ¸¹Àº µð¹ö±×¹®ÀÌ ±â·ÏµÇ°í ¼­¹ö ¼º´ÉÀÌ
¶³¾îÁø´Ù. ¼ýÀÚ°ªÀÇ ½ÇÁ¦ Àǹ̴ <code>mod_ext_filter.c</code>
¾ÕºÎºÐ¿¡ ÀÖ´Â DBGLVL_ »ó¼ö Á¤ÀÇ¿¡ ¼³¸íµÇÀÖ´Ù.
<p>ÁÖÀÇ: ÇÊÅÍ ·Î±×¸¦ ±â·ÏÇÏ·Á¸é core Áö½Ã¾î <directive
module="core">LogLevel</directive>À» »ç¿ëÇÏ¿© µð¹ö±×¹®À»
¾ÆÆÄÄ¡ ¿À·ù·Î±×¿¡ ±â·ÏÇØ¾ß ÇÑ´Ù.</p>
</dd>
<dt><code>LogStderr | NoLogStderr</code></dt>
<dd><code>LogStderr</code> Å°¿öµå´Â ¿ÜºÎ ÇÊÅÍ ÇÁ·Î±×·¥ÀÌ
Ç¥ÁØ¿À·ù·Î Ãâ·ÂÇÏ´Â ¹®±¸¸¦ ¾ÆÆÄÄ¡ ¿À·ù·Î±×¿¡ ±â·ÏÇÑ´Ù.
<code>NoLogStderr</code>´Â ÀÌ ±â´ÉÀ» ÇÏÁö ¾Ê´Â´Ù.</dd>
</dl>
<example><title>¿¹Á¦</title>
ExtFilterOptions LogStderr DebugLevel=0
</example>
<p>À§ÀÇ ¼³Á¤À» »ç¿ëÇϸé ÇÊÅÍ°¡ Ç¥ÁØ¿À·ù·Î Ãâ·ÂÇÏ´Â ¹®±¸¸¦
¾ÆÆÄÄ¡ ¿À·ù·Î±×¿¡ ±â·ÏÇÏ°í, <module>mod_ext_filter</module>´Â
ÀÚü µð¹ö±×¹®À» ±â·ÏÇÏÁö ¾Ê´Â´Ù. </p>
</usage>
</directivesynopsis>
</modulesynopsis>