Blame docs/manual/mod/mod_ext_filter.html.ko.euc-kr

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
<html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko"><head>
Packit 90a5c9
<meta content="text/html; charset=EUC-KR" 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 Server Version 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 Server Version 2.4

Packit 90a5c9
Packit 90a5c9
<-
Packit 90a5c9
Packit 90a5c9
Apache > HTTP Server > Documentation > Version 2.4 > 모듈
Packit 90a5c9
Packit 90a5c9

아파치 모듈 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
상태: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
    필터 명령어)을 아파치 필터로 사용할 수 있다. 이런 필터는
Packit 90a5c9
    아파치 API로 쓰여지고 아파치 서버 프로세스 안에서 실행되는
Packit 90a5c9
    필터에 비해 매우 느리지만, 다음과 같은 장점이 있다:

Packit 90a5c9
Packit 90a5c9
    
    Packit 90a5c9
          
  • 프로그래밍 모델이 매우 간단하다
  • Packit 90a5c9
    Packit 90a5c9
          
  • 프로그램이 표준입력에서 읽고 표준출력에 쓸 수만 있다면
  • Packit 90a5c9
          어떤 프로그래밍/스크립트 언어라도 사용할 수 있다
    Packit 90a5c9
    Packit 90a5c9
          
  • 이미 있는 프로그램을 수정없이 아파치 필터로 사용할
  • Packit 90a5c9
          수 있다
    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    실제 사용하기에는 성능이 떨어지지만,

    Packit 90a5c9
        mod_ext_filter를 사용하여 필터를 빨리 만들어볼
    Packit 90a5c9
        수 있다.

    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
        • Comments
        • Packit 90a5c9
          top
          Packit 90a5c9
          Packit 90a5c9

          예제

          Packit 90a5c9
          Packit 90a5c9
              

          다른 type의 응답을 HTML로 만든다

          Packit 90a5c9
                

          Packit 90a5c9
                  # mod_ext_filter 지시어를 가지고
          Packit 90a5c9
                  # 외부 프로그램 /usr/bin/enscript를 사용하여
          Packit 90a5c9
                  # 문서파일과 text/c 파일을 HTML로 만들고 결과의
          Packit 90a5c9
                  # type을 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 지시어
          Packit 90a5c9
                    SetOutputFilter c-to-html
          Packit 90a5c9
                    
          Packit 90a5c9
                    # .c 파일의 type을 text/c로 만드는 mod_mime
          Packit 90a5c9
                    # 지시어
          Packit 90a5c9
                    AddType text/c .c
          Packit 90a5c9
                    
          Packit 90a5c9
                    # 디버그 수준을 높여서 요청마다 현재 설정을
          Packit 90a5c9
                    # 알려주는 로그문을 기록하는 mod_ext_filter
          Packit 90a5c9
                    # 지시어
          Packit 90a5c9
                    ExtFilterOptions DebugLevel=1
          Packit 90a5c9
                  
          Packit 90a5c9
                  </Directory>
          Packit 90a5c9
                

          Packit 90a5c9
              
          Packit 90a5c9
          Packit 90a5c9
              

          content 인코딩 필터 구현하기

          Packit 90a5c9
                

          Note: 아래 gzip 예제는 단지 설명을 예로 든 것이다.

          Packit 90a5c9
                실제 서비스에 사용하려면 mod_deflate
          Packit 90a5c9
                참고하길 바란다.

          Packit 90a5c9
          Packit 90a5c9
                

          Packit 90a5c9
                  # 외부 필터를 정의하는 mod_ext_filter 지시어
          Packit 90a5c9
                  ExtFilterDefine gzip mode=output cmd=/bin/gzip
          Packit 90a5c9
                  
          Packit 90a5c9
                  <Location /gzipped>
          Packit 90a5c9
                  
          Packit 90a5c9
                    # 출력할때 gzip 필터를 실행하는 core 지시어
          Packit 90a5c9
                    SetOutputFilter gzip
          Packit 90a5c9
                    
          Packit 90a5c9
                    # "Content-Encoding: gzip" 헤더를 추가하는
          Packit 90a5c9
                    # mod_header 지시어
          Packit 90a5c9
                    Header set Content-Encoding gzip
          Packit 90a5c9
                  
          Packit 90a5c9
                  </Location>
          Packit 90a5c9
                

          Packit 90a5c9
              
          Packit 90a5c9
          Packit 90a5c9
              

          서버를 느리게 하기

          Packit 90a5c9
                

          Packit 90a5c9
                  # cat으로 모든 내용을 통과하는 필터를 정의하는
          Packit 90a5c9
                  # mod_ext_filter 지시어; cat은 아무것도 수정하지
          Packit 90a5c9
                  # 않는다; 단지 처리경로를 길게 하여 자원을 더 소모한다
          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
                    # 출력할때 slowdown 필터를 여러번 실행하는 core 지시어
          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
                  # 응답에서 글을 대체하는 필터를 정의하는
          Packit 90a5c9
                  # mod_ext_filter 지시어
          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
                    # 출력할때 fixtext 필터를 실행하는 core 지시어
          Packit 90a5c9
                    SetOutputFilter fixtext
          Packit 90a5c9
                  
          Packit 90a5c9
                  </Location>
          Packit 90a5c9
                

          Packit 90a5c9
              
          Packit 90a5c9
          Packit 90a5c9
              

          다른 필터를 추적하기

          Packit 90a5c9
                

          Packit 90a5c9
                  # 압축 문제가 있는 특정 클라이언트(IP 192.168.1.31)에
          Packit 90a5c9
                  # 대해 mod_deflate가 읽고 쓰는 자료를 추적한다.
          Packit 90a5c9
                  # 이 필터는 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
                  # 이 필터는 mod_deflate에서 나오는 자료를 추적한다.
          Packit 90a5c9
                  # ftype 파라미터를 사용하지않는 경우, 기본 필터형
          Packit 90a5c9
                  # AP_FTYPE_RESOURCE는 필터 순서를 mod_deflate *이전에*
          Packit 90a5c9
                  # 둔다. AP_FTYPE_CONTENT_SET 보다 조금 높은 숫자값을
          Packit 90a5c9
                  # 지정하면 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
              필터들간에 이름이 겹치면 안된다. 현재 필터등록 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
                묶어야 한다 (예를 들어,
          Packit 90a5c9
                cmd="/bin/mypgm arg1
          Packit 90a5c9
                arg2"). 쉘을 거치지않고 직접 프로그램을
          Packit 90a5c9
                실행하기때문에 일반적인 쉘 따옴표는 필요없다. 프로그램
          Packit 90a5c9
                아규먼트들은 공백으로 구분한다. 프로그램 아규먼트에 공백이
          Packit 90a5c9
                있다면 공백 앞에 백슬래쉬로 사용해야 한다. 백슬래쉬가
          Packit 90a5c9
                아규먼트의 일부라면 백슬래쉬를 두번 사용해야 한다. 프로그램을
          Packit 90a5c9
                실행할때 표준 CGI 환경변수와 추가로 DOCUMENT_URI,
          Packit 90a5c9
                DOCUMENT_PATH_INFO, QUERY_STRING_UNESCAPED 변수를 설정한다.
          Packit 90a5c9
          Packit 90a5c9
                
          mode=mode
          Packit 90a5c9
          Packit 90a5c9
                
          응답을 처리하는 필터는 (기본값인) mode=output
          Packit 90a5c9
                사용한다. 요청을 처리하는 필터는 mode=input
          Packit 90a5c9
                사용한다. mode=input은 아파치 2.1에 추가되었다.
          Packit 90a5c9
          Packit 90a5c9
                
          intype=imt
          Packit 90a5c9
          Packit 90a5c9
                
          이 파라미터는 필터로 처리할 문서의 인터넷 media
          Packit 90a5c9
                type(, MIME type)을 지정한다. 기본적으로 모든
          Packit 90a5c9
                문서를 필터로 처리한다. intype=을 지정하면
          Packit 90a5c9
                다른 type의 문서는 필터로 처리하지 않는다.
          Packit 90a5c9
          Packit 90a5c9
                
          outtype=imt
          Packit 90a5c9
          Packit 90a5c9
                
          이 파라미터는 필터로 처리한 문서의 인터넷 media
          Packit 90a5c9
                type(, MIME type)을 지정한다. 필터처리 작업중에
          Packit 90a5c9
                인터넷 media type을 변경할때 유용하다. 기본적으로, 인터넷
          Packit 90a5c9
                media type은 변하지 않는다.
          Packit 90a5c9
          Packit 90a5c9
                
          PreservesContentLength
          Packit 90a5c9
          Packit 90a5c9
                
          PreservesContentLength 키워드는 필터가
          Packit 90a5c9
                content length를 유지하도록 한다. 대부분의 필터가 content
          Packit 90a5c9
                length를 변경하므로 이 키워드는 기본값이 아니다. 필터가
          Packit 90a5c9
                길이를 유지할때만 이 키워드를 사용해야 한다.
          Packit 90a5c9
          Packit 90a5c9
                
          ftype=filtertype
          Packit 90a5c9
          Packit 90a5c9
                
          이 파라미터는 필터 종류에 대한 숫자값을 지정한다.
          Packit 90a5c9
                대부분의 경우 기본값인 AP_FTYPE_RESOURCE가 적당하다.
          Packit 90a5c9
                필터를 실행하는 순서가 자원필터와 달라야하는 경우 이
          Packit 90a5c9
                파라미터가 필요하다. 적당한 값을 알려면 util_filter.h에
          Packit 90a5c9
                있는 AP_FTYPE_* 정의를 참고하라.
          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
          사용장소:directory
          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
                  DebugLevel 키워드는
          Packit 90a5c9
                  mod_ext_filter가 기록하는 디버그 문구
          Packit 90a5c9
                  수준을 정한다. 기본값은 디버그문을 기록하지 않는다.
          Packit 90a5c9
                  이는 DebugLevel=0과 같다. 높은 숫자를
          Packit 90a5c9
                  사용할수록, 더 많은 디버그문이 기록되고 서버 성능이
          Packit 90a5c9
                  떨어진다. 숫자값의 실제 의미는 mod_ext_filter.c
          Packit 90a5c9
                  앞부분에 있는 DBGLVL_ 상수 정의에 설명되있다.
          Packit 90a5c9
          Packit 90a5c9
                  

          주의: 필터 로그를 기록하려면 core 지시어 LogLevel을 사용하여 디버그문을

          Packit 90a5c9
                  아파치 오류로그에 기록해야 한다.

          Packit 90a5c9
                
          Packit 90a5c9
          Packit 90a5c9
                
          LogStderr | NoLogStderr
          Packit 90a5c9
          Packit 90a5c9
                
          LogStderr 키워드는 외부 필터 프로그램이
          Packit 90a5c9
                표준오류로 출력하는 문구를 아파치 오류로그에 기록한다.
          Packit 90a5c9
                NoLogStderr는 이 기능을 하지 않는다.
          Packit 90a5c9
              
          Packit 90a5c9
          Packit 90a5c9
              

          예제

          Packit 90a5c9
                ExtFilterOptions LogStderr DebugLevel=0
          Packit 90a5c9
              

          Packit 90a5c9
          Packit 90a5c9
              

          위의 설정을 사용하면 필터가 표준오류로 출력하는 문구를

          Packit 90a5c9
              아파치 오류로그에 기록하고, 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

          Comments

          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.
          Licensed under the 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>