mirror of
				https://github.com/apache/httpd.git
				synced 2025-10-31 19:10:37 +03:00 
			
		
		
		
	git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1588219 13f79535-47bb-0310-9956-ffa450edef68
		
			
				
	
	
		
			304 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			304 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?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: 395228:1584572 (outdated) -->
 | |
| 
 | |
| <!--
 | |
|  Licensed to the Apache Software Foundation (ASF) under one or more
 | |
|  contributor license agreements.  See the NOTICE file distributed with
 | |
|  this work for additional information regarding copyright ownership.
 | |
|  The ASF licenses this file to You 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_isapi.xml.meta">
 | |
| 
 | |
| <name>mod_isapi</name>
 | |
| <description>Windows용 아파치에서 ISAPI Extension 사용</description>
 | |
| <status>Base</status>
 | |
| <sourcefile>mod_isapi.c</sourcefile>
 | |
| <identifier>isapi_module</identifier>
 | |
| <compatibility>Win32 only</compatibility>
 | |
| 
 | |
| <summary>
 | |
|     <p>이 모듈은 Internet Server extension API를 구현한다. 그래서
 | |
|     제약은 있지만 Windows용 아파치에서 Internet Server extension을
 | |
|     (<em>즉,</em> ISAPI .dll 모듈) 사용할 수 있다.</p>
 | |
| 
 | |
|     <p>ISAPI extension 모듈(.dll 파일)은 제삼자가 작성한다.
 | |
|     Apache Group이 이들 모듈을 만들지 않았으며, 지원도 하지
 | |
|     않는다. ISAPI extension 사용에 관한 문제는 ISAPI 제작자에게
 | |
|     직접 연락하길 바란다. <strong>제발 이런 문제를 아파치
 | |
|     메일링리스트나 버그보고 페이지에 올리지 <em>마라</em>.</strong></p>
 | |
| </summary>
 | |
| 
 | |
| <section id="usage"><title>사용법</title>
 | |
| 
 | |
|     <p>서버설정파일에서 <directive
 | |
|     module="mod_mime">AddHandler</directive> 지시어를 사용하여
 | |
|     ISAPI 파일 확장자와 <code>isapi-handler</code> 핸들러를 연결한다.
 | |
|     .dll 파일을 ISAPI extension으로 처리하려면 httpd.conf 파일에
 | |
|     다음과 같이 추가한다.</p>
 | |
|     <example>
 | |
|         AddHandler isapi-handler .dll
 | |
|     </example>
 | |
| 
 | |
|     <p>아파치 서버는 요청한 모듈을 메모리에 계속 둘 수 없다.
 | |
|     그러나 httpd.conf에서 다음과 같은 설정으로 특정 모듈을 미리
 | |
|     읽어들일 수는 있다.</p>
 | |
|     <example>
 | |
|         ISAPICacheFile c:/WebWork/Scripts/ISAPI/mytest.dll
 | |
|     </example>
 | |
| 
 | |
|     <p>ISAPI extension을 미리 읽어들이던지 미리 읽어들이지 않던지
 | |
|     관계없이 ISAPI extension은 CGI 스크립트와 동일한 권한과
 | |
|     제약을 따른다. 즉, ISAPI .dll 파일이 있는 디렉토리에 <directive
 | |
|     module="core">Options</directive> <code>ExecCGI</code>가
 | |
|     필요하다.</p>
 | |
| 
 | |
|     <p><module>mod_isapi</module>의 ISAPI 지원에 대한 자세한
 | |
|     내용과 설명은 <a href="#notes">추가 설명</a>과 <a
 | |
|     href="#journal">개발자 정보</a>를 참고하라.</p>
 | |
| </section>
 | |
| 
 | |
| <section id="notes"><title>추가 설명</title>
 | |
| 
 | |
|     <p>아파치 ISAPI 구현은 비동기 입출력에 대한 "마이크로소프트
 | |
|     특유의" 확장기능을 제외한 ISAPI 2.0 규약을 모두 만족한다.
 | |
|     아파치의 입출력 구조로는 ISAPI가 사용할 수 있는 방식으로
 | |
|     비동기 입출력을 할 수 없다. ISA가 비동기 입출력과 같이 지원하지
 | |
|     않는 기능을 사용하려 한다면, 디버깅에 도움을 주기위해 오류
 | |
|     로그에 기록을 남긴다. 로그가 매우 커질 수 있기때문에
 | |
|     <code>ISAPILogNotSupported Off</code> 지시어를 사용하면
 | |
|     로그에 기록하지 않는다.</p>
 | |
| 
 | |
|     <p>Microsoft IIS와 같은 서버는 ISAPI extension을 메모리로
 | |
|     읽어들여서 메모리 사용량이 매우 많지 않거나 특별히 설정하지
 | |
|     않는한 그대로 메모리에 둔다. 아파치는 현재 <directive
 | |
|     module="mod_isapi">ISAPICacheFile</directive> 지시어를 사용하지
 | |
|     않는다면 요청을 받을때마다 ISAPI extension을 메모리에 읽어들이고
 | |
|     버린다. 비효율적이지만, 아파치의 메모리 구조상 이것이 가장
 | |
|     효율적인 방법이다. 여러 ISAPI 모듈이 아파치 서버와 약간
 | |
|     호환이 안맞기때문에 서버의 안정성을 위해 모듈을 메모리에서
 | |
|     버린다.</p>
 | |
| 
 | |
|     <p>또, 아파치는 ISAPI Extension을 지원하지만, <strong>ISAPI
 | |
|     Filter를 지원하지 않음을</strong> 기억하라. 나중에 필터를
 | |
|     지원할 수 있지만, 현재는 계획이 없다.</p>
 | |
| </section>
 | |
| 
 | |
| <section id="journal"><title>개발자 정보</title>
 | |
| 
 | |
|     <p>아파치 2.0 <module>mod_isapi</module> 모듈을 프로그래밍한다면,
 | |
|     <code>ServerSupportFunction</code> 호출을 다음 지시어로
 | |
|     제한해야 한다.</p>
 | |
| 
 | |
|     <dl>
 | |
|       <dt><code>HSE_REQ_SEND_URL_REDIRECT_RESP</code></dt>
 | |
|       <dd>사용자를 다른 위치로 리다이렉션한다.<br />
 | |
|       완전한 URL을 사용해야 한다 (<em>예를 들어,</em>
 | |
|       <code>http://server/location</code>).</dd>
 | |
| 
 | |
|       <dt><code>HSE_REQ_SEND_URL</code></dt>
 | |
|       <dd>사용자를 다른 위치로 리다이렉션한다.<br />
 | |
|       완전한 URL이 아니며, 프로토콜과 서버명을 넘길 수 없다
 | |
|       (<em>예를 들어,</em> <code>/location</code>같은 것만 가능).<br />
 | |
|       브라우저가 아니라 서버가 리다이렉션을 처리한다.<br />
 | |
|       <note type="warning"><title>경고</title>
 | |
|         <p>최근 문서를 보면 Microsoft가 두 <code>HSE_REQ_SEND_URL</code>
 | |
|         기능간의 차이를 없앤 것처럼 보인다. 아파치는 계속 이
 | |
|         둘의 아규먼트 조건과 행동을 다르게 처리할 것이다.</p>
 | |
|       </note></dd>
 | |
| 
 | |
|       <dt><code>HSE_REQ_SEND_RESPONSE_HEADER</code></dt>
 | |
|       <dd>headers 문자열 아규먼트에 빈줄이 (줄바꿈문자가 두번
 | |
|       연속) 있다면 아파치는 헤더 다음 내용을 응답 내용으로 사용한다.
 | |
|       headers 아규먼트가 NULL로 끝나기때문에, 응답 내용에 NULL을
 | |
|       사용할 수 없다.</dd>
 | |
| 
 | |
|       <dt><code>HSE_REQ_DONE_WITH_SESSION</code></dt>
 | |
|       <dd>ISAPI가 처리를 마치면 세션이 끝나기때문에 아파치는
 | |
|       아무 일도 하지 않는다.</dd>
 | |
| 
 | |
|       <dt><code>HSE_REQ_MAP_URL_TO_PATH</code></dt>
 | |
|       <dd>아파치는 가상 이름을 물리적(실제) 이름으로 변환한다.</dd>
 | |
| 
 | |
|       <dt><code>HSE_APPEND_LOG_PARAMETER</code></dt>
 | |
|       <dd>
 | |
|         문구를 아래 로그중 한곳에 남긴다.
 | |
| 
 | |
|         <ul>
 | |
|           <li><directive module="mod_log_config">CustomLog</directive>
 | |
|           지시어의 <code>\"%{isapi-parameter}n\"</code> 항목에</li>
 | |
| 
 | |
|           <li><directive module="mod_isapi">ISAPIAppendLogToQuery</directive>
 | |
|           <code>On</code> 지시어를 사용하여 <code>%q</code>
 | |
|           로그 항목에</li>
 | |
| 
 | |
|           <li><directive
 | |
|           module="mod_isapi">ISAPIAppendLogToErrors</directive>
 | |
|           <code>On</code> 지시어를 사용하여 오류 로그에</li>
 | |
|         </ul>
 | |
| 
 | |
|         <p>첫번째로 나온 <code>%{isapi-parameter}n</code> 항목은
 | |
|         언제나 사용할 수 있으며 권장한다.</p>
 | |
|       </dd>
 | |
| 
 | |
|       <dt><code>HSE_REQ_IS_KEEP_CONN</code></dt>
 | |
|       <dd>협상된 Keep-Alive 상태를 반환한다.</dd>
 | |
| 
 | |
|       <dt><code>HSE_REQ_SEND_RESPONSE_HEADER_EX</code></dt>
 | |
|       <dd><code>fKeepConn</code> 옵션을 무시하는 것을 제외하고는
 | |
|       문서에 나온데로 동작한다.</dd>
 | |
| 
 | |
|       <dt><code>HSE_REQ_IS_CONNECTED</code></dt>
 | |
|       <dd>요청이 중간에 끊어졌다면 false를 반환한다.</dd>
 | |
|     </dl>
 | |
| 
 | |
|     <p>지원하지 않는 <code>ServerSupportFunction</code> 호출을
 | |
|     하면 아파치는 <code>FALSE</code>를 반환하고
 | |
|     <code>GetLastError</code> 값을
 | |
|     <code>ERROR_INVALID_PARAMETER</code>로 설정한다.</p>
 | |
| 
 | |
|     <p><code>ReadClient</code>는 (<directive
 | |
|     module="mod_isapi">ISAPIReadAheadBuffer</directive>로 정의한)
 | |
|     초기버퍼크기를 넘어선 요청 내용을 가져온다.
 | |
|     <directive>ISAPIReadAheadBuffer</directive> 설정 (ISAPI
 | |
|     핸들러를 부르기전 버퍼의 바이트수) 보다 짧은 요청은 extension을
 | |
|     부를때 전부 전달된다. 요청이 길면, ISAPI extension은
 | |
|     <code>ReadClient</code>로 나머지 요청 내용을 가져와야 한다.</p>
 | |
| 
 | |
|     <p><code>WriteClient</code>를 지원하지만,
 | |
|     <code>HSE_IO_SYNC</code> 옵션만 사용하거나 (<code>0</code>
 | |
|     값) 아무 옵션도 사용하지 않아야 한다. 다른
 | |
|     <code>WriteClient</code> 요청은 <code>FALSE</code>를 반환하며
 | |
|     실패하고, <code>GetLastError</code> 값은
 | |
|     <code>ERROR_INVALID_PARAMETER</code>가 된다.</p>
 | |
| 
 | |
|     <p><code>GetServerVariable</code>은 지원하지만, (다른 서버에서
 | |
|     정의하는) 확장 서버변수는 없다.
 | |
|     <code>GetServerVariable</code>에서 모든 일반적인 아파치
 | |
|     CGI 환경변수와 <code>ALL_HTTP</code>, <code>ALL_RAW</code>
 | |
|     값을 사용할 수 있다.</p>
 | |
| 
 | |
|     <p>아파치 2.0 <module>mod_isapi</module>는 이후 ISAPI 규약에
 | |
|     나온 추가 기능을 지원하고, 비동기 입출력과
 | |
|     <code>TransmitFile</code> 기능을 조금 흉내낸다. 또, ISAPI
 | |
|     .dll을 미리 읽어들여서 성능을 높이는 아파치 1.3
 | |
|     <code>mod_isapi</code>에는 없는 기능을 지원한다.</p>
 | |
| </section>
 | |
| 
 | |
| <directivesynopsis>
 | |
| <name>ISAPICacheFile</name>
 | |
| <description>서버가 시작할때 메모리로 읽어들일 ISAPI .dll 파일들</description>
 | |
| <syntax>ISAPICacheFile <var>file-path</var> [<var>file-path</var>]
 | |
| ...</syntax>
 | |
| <contextlist><context>server config</context><context>virtual host</context>
 | |
| </contextlist>
 | |
| 
 | |
| <usage>
 | |
|     <p>아파치 서버가 시작할때 메모리로 읽어들여서 서버를 종료할때까지
 | |
|     메모리에 남아있을 파일명을 공백으로 구분하여 지정한다. 이
 | |
|     지시어는 ISAPI .dll 파일별로 여러번 사용할 수 있다. 파일의
 | |
|     전체 경로를 적는다. 절대 경로가 아니면 <directive
 | |
|     module="core">ServerRoot</directive>에 상대 경로로 받아들인다.</p>
 | |
| </usage>
 | |
| </directivesynopsis>
 | |
| 
 | |
| <directivesynopsis>
 | |
| <name>ISAPIReadAheadBuffer</name>
 | |
| <description>ISAPI extension의 미리읽기버퍼(read ahead buffer)
 | |
| 크기</description>
 | |
| <syntax>ISAPIReadAheadBuffer <var>size</var></syntax>
 | |
| <default>ISAPIReadAheadBuffer 49152</default>
 | |
| <contextlist><context>server config</context><context>virtual host</context>
 | |
| <context>directory</context><context>.htaccess</context></contextlist>
 | |
| <override>FileInfo</override>
 | |
| 
 | |
| <usage>
 | |
|     <p>ISAPI extension을 처음 호출할때 미리읽기버퍼의 최대 크기를
 | |
|     지정한다. (이 크기보다 큰) 나머지 자료는 <code>ReadClient</code>
 | |
|     콜백을 사용하여 읽어야 한다. 어떤 ISAPI extension은
 | |
|     <code>ReadClient</code> 기능을 지원하지 않는다. 이 경우
 | |
|     ISAPI extension 제작자에게 문의하라.</p>
 | |
| </usage>
 | |
| </directivesynopsis>
 | |
| 
 | |
| <directivesynopsis>
 | |
| <name>ISAPILogNotSupported</name>
 | |
| <description>ISAPI extension이 지원하지 않는 기능을 요청하면
 | |
| 로그에 기록한다</description>
 | |
| <syntax>ISAPILogNotSupported on|off</syntax>
 | |
| <default>ISAPILogNotSupported off</default>
 | |
| <contextlist><context>server config</context><context>virtual host</context>
 | |
| <context>directory</context><context>.htaccess</context></contextlist>
 | |
| <override>FileInfo</override>
 | |
| 
 | |
| <usage>
 | |
|     <p>ISAPI extension이 지원하지 않는 기능을 요청하면 서버
 | |
|     오류 로그에 기록한다. 나중에 관리자가 문제를 추적하는데
 | |
|     도움이 된다. 원하는 모든 ISAPI 모듈이 정상적으로 동작하면
 | |
|     다시 off로 되돌려야 한다.</p>
 | |
| </usage>
 | |
| </directivesynopsis>
 | |
| 
 | |
| <directivesynopsis>
 | |
| <name>ISAPIAppendLogToErrors</name>
 | |
| <description>ISAPI exntension의 <code>HSE_APPEND_LOG_PARAMETER</code>
 | |
| 요청을 오류 로그에 기록한다</description>
 | |
| <syntax>ISAPIAppendLogToErrors on|off</syntax>
 | |
| <default>ISAPIAppendLogToErrors off</default>
 | |
| <contextlist><context>server config</context><context>virtual host</context>
 | |
| <context>directory</context><context>.htaccess</context></contextlist>
 | |
| <override>FileInfo</override>
 | |
| 
 | |
| <usage>
 | |
|     <p>ISAPI exntension의 <code>HSE_APPEND_LOG_PARAMETER</code>
 | |
|     요청을 오류 로그에 기록한다.</p>
 | |
| </usage>
 | |
| </directivesynopsis>
 | |
| 
 | |
| <directivesynopsis>
 | |
| <name>ISAPIAppendLogToQuery</name>
 | |
| <description>ISAPI exntension의 <code>HSE_APPEND_LOG_PARAMETER</code>
 | |
| 요청을 질의문자열에 기록한다</description>
 | |
| <syntax>ISAPIAppendLogToQuery on|off</syntax>
 | |
| <default>ISAPIAppendLogToQuery on</default>
 | |
| <contextlist><context>server config</context><context>virtual host</context>
 | |
| <context>directory</context><context>.htaccess</context></contextlist>
 | |
| <override>FileInfo</override>
 | |
| 
 | |
| <usage>
 | |
|     <p>ISAPI exntension의 <code>HSE_APPEND_LOG_PARAMETER</code>
 | |
|     요청을 질의문자열에 기록한다 (<directive
 | |
|     module="mod_log_config">CustomLog</directive> <code>%q</code>
 | |
|     항목에 덧붙인다).</p>
 | |
| </usage>
 | |
| </directivesynopsis>
 | |
| 
 | |
| <directivesynopsis>
 | |
| <name>ISAPIFakeAsync</name>
 | |
| <description>비동기 ISAPI 콜백을 지원하는 척한다</description>
 | |
| <syntax>ISAPIFakeAsync on|off</syntax>
 | |
| <default>ISAPIFakeAsync off</default>
 | |
| <contextlist><context>server config</context><context>virtual host</context>
 | |
| <context>directory</context><context>.htaccess</context></contextlist>
 | |
| <override>FileInfo</override>
 | |
| 
 | |
| <usage>
 | |
|     <p>on으로 설정하면 비동기 ISAPI 콜백 지원을 흉내낸다.</p>
 | |
| </usage>
 | |
| </directivesynopsis>
 | |
| 
 | |
| </modulesynopsis>
 | |
| 
 |