Apache HTTP Server Version 2.4

| ¼³¸í: | ÀÀ´ä ³»¿ëÀ» ¿ÜºÎ ÇÁ·Î±×·¥À¸·Î ó¸®ÇÑ ÈÄ Å¬¶óÀÌ¾ðÆ®·Î º¸³½´Ù | 
|---|---|
| »óÅÂ: | Extension | 
| ¸ðµâ¸í: | ext_filter_module | 
| ¼Ò½ºÆÄÀÏ: | mod_ext_filter.c | 
mod_ext_filter¸¦ »ç¿ëÇÏ¸é °£´ÜÇϰí Àͼ÷ÇÑ
    ¹æ¹ýÀ¸·Î ÇÊÅ͸¦ ¸¸µé ¼ö ÀÖ´Ù.
    Ç¥ÁØÀԷ¿¡¼ Àаí Ç¥ÁØÃâ·Â¿¡ ¾²´Â ÇÁ·Î±×·¥(Áï, À¯´Ð½º½Ä
    ÇÊÅÍ ¸í·É¾î)À» ¾ÆÆÄÄ¡ ÇÊÅÍ·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ·± ÇÊÅÍ´Â
    ¾ÆÆÄÄ¡ API·Î ¾²¿©Áö°í ¾ÆÆÄÄ¡ ¼¹ö ÇÁ·Î¼¼½º ¾È¿¡¼ ½ÇÇàµÇ´Â
    ÇÊÅÍ¿¡ ºñÇØ ¸Å¿ì ´À¸®Áö¸¸, ´ÙÀ½°ú °°Àº ÀåÁ¡ÀÌ ÀÖ´Ù:
½ÇÁ¦ »ç¿ëÇϱ⿡´Â ¼º´ÉÀÌ ¶³¾îÁöÁö¸¸,
    mod_ext_filter¸¦ »ç¿ëÇÏ¿© ÇÊÅ͸¦ »¡¸® ¸¸µé¾îº¼
    ¼ö ÀÖ´Ù.
        # mod_ext_filter Áö½Ã¾î¸¦ °¡Áö°í
        # ¿ÜºÎ ÇÁ·Î±×·¥ /usr/bin/enscript¸¦ »ç¿ëÇÏ¿©
        # ¹®¼ÆÄÀϰú text/c ÆÄÀÏÀ» HTML·Î ¸¸µé°í °á°úÀÇ
        # typeÀ» text/html·Î º¯°æÇÏ´Â ÇÊÅ͸¦ Á¤ÀÇÇÑ´Ù
        ExtFilterDefine c-to-html mode=output \
        
          intype=text/c outtype=text/html \
          cmd="/usr/bin/enscript --color -W html -Ec -o - -"
        
        
        <Directory "/export/home/trawick/apacheinst/htdocs/c">
        
          # Ãâ·Â¿¡ »õ·Î¿î ÇÊÅ͸¦ ½ÇÇàÇÏ´Â core Áö½Ã¾î
          SetOutputFilter c-to-html
          
          # .c ÆÄÀÏÀÇ typeÀ» text/c·Î ¸¸µå´Â mod_mime
          # Áö½Ã¾î
          AddType text/c .c
          
          # µð¹ö±× ¼öÁØÀ» ³ô¿©¼ ¿äû¸¶´Ù ÇöÀç ¼³Á¤À»
          # ¾Ë·ÁÁÖ´Â ·Î±×¹®À» ±â·ÏÇÏ´Â mod_ext_filter
          # Áö½Ã¾î
          ExtFilterOptions DebugLevel=1
        
        </Directory>
      
Note: ¾Æ·¡ gzip ¿¹Á¦´Â ´ÜÁö ¼³¸íÀ» ¿¹·Î µç °ÍÀÌ´Ù.
      ½ÇÁ¦ ¼ºñ½º¿¡ »ç¿ëÇÏ·Á¸é mod_deflate¸¦
      Âü°íÇÏ±æ ¹Ù¶õ´Ù.
        # ¿ÜºÎ ÇÊÅ͸¦ Á¤ÀÇÇÏ´Â mod_ext_filter Áö½Ã¾î
        ExtFilterDefine gzip mode=output cmd=/bin/gzip
        
        <Location /gzipped>
        
          # Ãâ·ÂÇÒ¶§ gzip ÇÊÅ͸¦ ½ÇÇàÇÏ´Â core Áö½Ã¾î
          SetOutputFilter gzip
          
          # "Content-Encoding: gzip" Çì´õ¸¦ Ãß°¡ÇÏ´Â
          # mod_header Áö½Ã¾î
          Header set Content-Encoding gzip
        
        </Location>
      
        # catÀ¸·Î ¸ðµç ³»¿ëÀ» Åë°úÇÏ´Â ÇÊÅ͸¦ Á¤ÀÇÇÏ´Â
        # mod_ext_filter Áö½Ã¾î; catÀº ¾Æ¹«°Íµµ ¼öÁ¤ÇÏÁö
        # ¾Ê´Â´Ù; ´ÜÁö 󸮰æ·Î¸¦ ±æ°Ô ÇÏ¿© ÀÚ¿øÀ» ´õ ¼Ò¸ðÇÑ´Ù
        ExtFilterDefine slowdown mode=output cmd=/bin/cat \
        
          preservescontentlength
        
        
        <Location />
        
          # Ãâ·ÂÇÒ¶§ slowdown ÇÊÅ͸¦ ¿©·¯¹ø ½ÇÇàÇÏ´Â core Áö½Ã¾î
          #
          SetOutputFilter slowdown;slowdown;slowdown
        
        </Location>
      
        # ÀÀ´ä¿¡¼ ±ÛÀ» ´ëüÇÏ´Â ÇÊÅ͸¦ Á¤ÀÇÇÏ´Â
        # mod_ext_filter Áö½Ã¾î
        #
        ExtFilterDefine fixtext mode=output intype=text/html \
        
          cmd="/bin/sed s/verdana/arial/g"
        
        
        <Location />
        
          # Ãâ·ÂÇÒ¶§ fixtext ÇÊÅ͸¦ ½ÇÇàÇÏ´Â core Áö½Ã¾î
          SetOutputFilter fixtext
        
        </Location>
      
        # ¾ÐÃà ¹®Á¦°¡ Àִ ƯÁ¤ Ŭ¶óÀ̾ðÆ®(IP 192.168.1.31)¿¡
        # ´ëÇØ mod_deflate°¡ ÀÐ°í ¾²´Â ÀڷḦ ÃßÀûÇÑ´Ù.
        # ÀÌ ÇÊÅÍ´Â mod_deflate·Î º¸³»±â Àü ÀڷḦ ÃßÀûÇÑ´Ù.
        ExtFilterDefine tracebefore \
        
          cmd="/bin/tracefilter.pl /tmp/tracebefore" \
          EnableEnv=trace_this_client
        
        
        # ÀÌ ÇÊÅÍ´Â mod_deflate¿¡¼ ³ª¿À´Â ÀڷḦ ÃßÀûÇÑ´Ù.
        # ftype ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇÏÁö¾Ê´Â °æ¿ì, ±âº» ÇÊÅÍÇü
        # AP_FTYPE_RESOURCE´Â ÇÊÅÍ ¼ø¼¸¦ mod_deflate *ÀÌÀü¿¡*
        # µÐ´Ù. AP_FTYPE_CONTENT_SET º¸´Ù Á¶±Ý ³ôÀº ¼ýÀÚ°ªÀ»
        # ÁöÁ¤Çϸé mod_deflate ÀÌÈÄ¿¡ ½ÇÇàÇÑ´Ù.
        ExtFilterDefine traceafter \
        
          cmd="/bin/tracefilter.pl /tmp/traceafter" \
          EnableEnv=trace_this_client ftype=21
        
        
        <Directory /usr/local/docs>
        
          SetEnvIf Remote_Addr 192.168.1.31 trace_this_client
          SetOutputFilter tracebefore;deflate;traceafter
        
        </Directory>
      
        #!/usr/local/bin/perl -w
        use strict;
        
        open(SAVE, ">$ARGV[0]")
        
          or die "can't open $ARGV[0]: $?";
        
        
        while (<STDIN>) {
        
          print SAVE $_;
          print $_;
        
        }
        
        close(SAVE);
      
| ¼³¸í: | ¿ÜºÎ ÇÊÅ͸¦ Á¤ÀÇÇÑ´Ù | 
|---|---|
| ¹®¹ý: | ExtFilterDefine filtername parameters | 
| »ç¿ëÀå¼Ò: | ÁÖ¼¹ö¼³Á¤ | 
| »óÅÂ: | Extension | 
| ¸ðµâ: | mod_ext_filter | 
ExtFilterDefine Áö½Ã¾î´Â ¿ÜºÎ
    ÇÊÅÍÀÇ ¼ºÁú°ú ½ÇÇàÇÒ ÇÁ·Î±×·¥, ¾Æ±Ô¸ÕÆ®¸¦ Á¤ÀÇÇÑ´Ù.
filternameÀº Á¤ÀÇÇÒ ÇÊÅÍ À̸§À» ÁöÁ¤ÇÑ´Ù. ÀÌ À̸§À» SetOutputFilter Áö½Ã¾î¿¡¼ »ç¿ëÇÑ´Ù. µî·ÏÇÑ ¸ðµç ÇÊÅ͵鰣¿¡ À̸§ÀÌ °ãÄ¡¸é ¾ÈµÈ´Ù. ÇöÀç ÇÊÅ͵î·Ï API´Â ¿À·ù¸¦ º¸°íÇÏÁö ¾Ê´Â´Ù. ±×·¡¼ »ç¿ëÀÚ´Â À̸§ÀÌ °ãÄ¡´Â ¹®Á¦¸¦ ¾ËÁö ¸øÇÑ´Ù.
½ÇÇàÇÒ ¿ÜºÎ ¸í·É¾î¿Í ´Ù¸¥ ¼ºÁúÀ» Á¤ÀÇÇÏ´Â ³ª¸ÓÁö ¾Æ±Ô¸ÕÆ®´Â
    ¾î¶² ¼ø¼·Î ³ª¿Íµµ °¡´ÉÇÏ´Ù. ´Ü, cmd= ÆÄ¶ó¹ÌÅÍ´Â
    ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù. »ç¿ëÇÒ ¼ö ÀÖ´Â ÆÄ¶ó¹ÌÅÍ´Â ´ÙÀ½°ú °°´Ù:
cmd=cmdlinecmd= Ű¿öµå´Â ½ÇÇàÇÒ ¿ÜºÎ ¸í·É¾î¸¦ ÁöÁ¤ÇÑ´Ù.
      ÇÁ·Î±×·¥¸í µÚ¿¡ ¾Æ±Ô¸ÕÆ®°¡ ÀÖ´Ù¸é ¸í·ÉÇàÀ» ½Öµû¿ÈÇ¥·Î
      ¹¾î¾ß ÇÑ´Ù (¿¹¸¦ µé¾î,
      cmd="/bin/mypgm arg1
      arg2"). ½©À» °ÅÄ¡Áö¾Ê°í Á÷Á¢ ÇÁ·Î±×·¥À»
      ½ÇÇàÇϱ⶧¹®¿¡ ÀϹÝÀûÀÎ ½© µû¿ÈÇ¥´Â ÇÊ¿ä¾ø´Ù. ÇÁ·Î±×·¥
      ¾Æ±Ô¸ÕÆ®µéÀº °ø¹éÀ¸·Î ±¸ºÐÇÑ´Ù. ÇÁ·Î±×·¥ ¾Æ±Ô¸ÕÆ®¿¡ °ø¹éÀÌ
      ÀÖ´Ù¸é °ø¹é ¾Õ¿¡ ¹é½½·¡½¬·Î »ç¿ëÇØ¾ß ÇÑ´Ù. ¹é½½·¡½¬°¡
      ¾Æ±Ô¸ÕÆ®ÀÇ ÀϺζó¸é ¹é½½·¡½¬¸¦ µÎ¹ø »ç¿ëÇØ¾ß ÇÑ´Ù. ÇÁ·Î±×·¥À»
      ½ÇÇàÇÒ¶§ Ç¥ÁØ CGI ȯ°æº¯¼ö¿Í Ãß°¡·Î DOCUMENT_URI,
      DOCUMENT_PATH_INFO, QUERY_STRING_UNESCAPED º¯¼ö¸¦ ¼³Á¤ÇÑ´Ù.mode=modemode=outputÀ»
      »ç¿ëÇÑ´Ù. ¿äûÀ» ó¸®ÇÏ´Â ÇÊÅÍ´Â mode=inputÀ»
      »ç¿ëÇÑ´Ù. mode=inputÀº ¾ÆÆÄÄ¡ 2.1¿¡ Ãß°¡µÇ¾ú´Ù.intype=imtintype=À» ÁöÁ¤Çϸé
      ´Ù¸¥ typeÀÇ ¹®¼´Â ÇÊÅͷΠó¸®ÇÏÁö ¾Ê´Â´Ù.outtype=imtPreservesContentLengthPreservesContentLength Ű¿öµå´Â ÇÊÅͰ¡
      content length¸¦ À¯ÁöÇϵµ·Ï ÇÑ´Ù. ´ëºÎºÐÀÇ ÇÊÅͰ¡ content
      length¸¦ º¯°æÇϹǷΠÀÌ Å°¿öµå´Â ±âº»°ªÀÌ ¾Æ´Ï´Ù. ÇÊÅͰ¡
      ±æÀ̸¦ À¯ÁöÇÒ¶§¸¸ ÀÌ Å°¿öµå¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.ftype=filtertypedisableenv=envenableenv=env| ¼³¸í: | mod_ext_filter¿É¼ÇÀ» ¼³Á¤ÇÑ´Ù | 
|---|---|
| ¹®¹ý: | ExtFilterOptions option [option] ... | 
| ±âº»°ª: | ExtFilterOptions DebugLevel=0 NoLogStderr | 
| »ç¿ëÀå¼Ò: | directory | 
| »óÅÂ: | Extension | 
| ¸ðµâ: | mod_ext_filter | 
ExtFilterOptions Áö½Ã¾î´Â
    mod_ext_filterÀÇ Æ¯º°ÇÑ Ã³¸®¿É¼ÇÀ» ÁöÁ¤ÇÑ´Ù.
    OptionÀº ´ÙÀ½Áß Çϳª´Ù.
DebugLevel=nDebugLevel Ű¿öµå´Â
        mod_ext_filter°¡ ±â·ÏÇÏ´Â µð¹ö±× ¹®±¸
        ¼öÁØÀ» Á¤ÇÑ´Ù. ±âº»°ªÀº µð¹ö±×¹®À» ±â·ÏÇÏÁö ¾Ê´Â´Ù.
        ÀÌ´Â DebugLevel=0°ú °°´Ù. ³ôÀº ¼ýÀÚ¸¦
        »ç¿ëÇÒ¼ö·Ï, ´õ ¸¹Àº µð¹ö±×¹®ÀÌ ±â·ÏµÇ°í ¼¹ö ¼º´ÉÀÌ
        ¶³¾îÁø´Ù. ¼ýÀÚ°ªÀÇ ½ÇÁ¦ Àǹ̴ mod_ext_filter.c
        ¾ÕºÎºÐ¿¡ ÀÖ´Â DBGLVL_ »ó¼ö Á¤ÀÇ¿¡ ¼³¸íµÇÀÖ´Ù.
        ÁÖÀÇ: ÇÊÅÍ ·Î±×¸¦ ±â·ÏÇÏ·Á¸é core Áö½Ã¾î LogLevelÀ» »ç¿ëÇÏ¿© µð¹ö±×¹®À»
        ¾ÆÆÄÄ¡ ¿À·ù·Î±×¿¡ ±â·ÏÇØ¾ß ÇÑ´Ù.
LogStderr | NoLogStderrLogStderr Ű¿öµå´Â ¿ÜºÎ ÇÊÅÍ ÇÁ·Î±×·¥ÀÌ
      Ç¥ÁØ¿À·ù·Î Ãâ·ÂÇÏ´Â ¹®±¸¸¦ ¾ÆÆÄÄ¡ ¿À·ù·Î±×¿¡ ±â·ÏÇÑ´Ù.
      NoLogStderr´Â ÀÌ ±â´ÉÀ» ÇÏÁö ¾Ê´Â´Ù.
      ExtFilterOptions LogStderr DebugLevel=0
    
À§ÀÇ ¼³Á¤À» »ç¿ëÇϸé ÇÊÅͰ¡ Ç¥ÁØ¿À·ù·Î Ãâ·ÂÇÏ´Â ¹®±¸¸¦
    ¾ÆÆÄÄ¡ ¿À·ù·Î±×¿¡ ±â·ÏÇϰí, mod_ext_filter´Â
    ÀÚü µð¹ö±×¹®À» ±â·ÏÇÏÁö ¾Ê´Â´Ù.