Apache HTTP Server Version 2.0
Apache 2.0의 새로운 기능 개요
이 문서는 아파치 웹서버 1.3 버전과 2.0버전간의 주된 차이점을 설명한다.
핵심 부분에서 나아진 점
- 유닉스 쓰레드
- POSIX 쓰레드를 지원하는 유닉스 시스템에서 아파치를 여러 프로세스와 여러 쓰레드로 혼합해서 실행할 수 있다. 전부는 아니지만 많은 경우 확장가능성(scalability)을 높인다.
- 새로운 컴파일 시스템
- 컴파일 시스템이
autoconf
와libtool
을 사용하도록 재작성되었다. 그래서 아파치 구성 시스템이 다른 패키지들과 좀더 비슷해졌다. - 여러 프로토콜 지원
- 이제 아파치는 여러 프로토콜을 서비스할 수 있는 구조를
갖췄다.
mod_echo
가 그 예로 작성되었다. - 비유닉스 플래폼에 대한 더 나은 지원
- Apache 2.0는 BeOS, OS/2, 윈도우즈와 같은 비유닉스 플래폼에서 더 빠르고 안정화되었다. 이제 아파치는 이들 플래폼에서 버그가 많고 성능이 느렸던 POSIX 호환층 대신 자체 API로 구현된 플래폼 특유의 다중처리 모듈 (MPM)과 Apache Portable Runtime (APR)을 사용하여 구현된다.
- 새로운 아파치 API
- 모듈 API가 2.0에서 상당히 변했다. 1.3의 여러 모듈 순서와 우선순위 문제가 사라졌다. 2.0은 이를 대부분 자동으로 처리하며, 모듈 순서는 이제 더 유연한 훅(hook) 단위로 지정한다. 또, 아파치 서버 핵심 부분을 수정하지 않고 새로운 모듈 기능을 제공하는 함수가 추가되었다.
- IPv6 지원
- 하위 Apache Portable Runtine 라이브러리가 IPv6를 지원하는
시스템에서 아파치는 기본적으로 IPv6 소켓을 기다린다. 또,
Listen
,NameVirtualHost
,VirtualHost
지시어가 IPv6 숫자 주소를 지원한다. (예, "Listen [2001:db8::1]:8080
"). - 필터링
- 이제 아파치 모듈을 서버로 오고가는 흐름에 대한
필터로 사용할 수 있다. 예를 들어
mod_include
의INCLUDES
필터를 사용하여 CGI 스크립트 출력에서 Server Side Include 지시어를 처리할 수 있다.mod_ext_filter
모듈은 CGI 프로그램을 핸들러로 사용하는 것과 같이 외부 프로그램을 필터로 사용할 수 있게 한다. - 다국어 오류 응답
- 브라우저로 보내는 오류 응답문이 이제 SSI 문서를 사용하여 다국어로 제공된다. 관리자는 통일된 외관을 위해 이 문서를 수정할 수 있다.
- 간단해진 설정
- 혼란을 주던 많은 지시어들이 간단해졌다. 자주 혼란을
주던
Port
와BindAddress
지시어는 없어지고 IP 주소 연결에Listen
지시어만을 사용한다.ServerName
지시어는 리다이렉션과 가상호스트 인식에만 사용될 서버명과 포트를 지정한다. - Windows NT 유니코드 자체 지원
- Windows NT에서 Apache 2.0은 이제 모든 파일명 인코딩에 utf-8을 사용한다. 파일명은 하위 유니코드 파일시스템으로 직접 변역되어, Windows 2000과 Windows XP를 포함한 모든 Windows NT기반 시스템에 다국어 지원을 제공한다. 이 기능은 Windows 95, 98, ME에는 지원되지않고, 파일시스템 접근에 전과 같이 시스템의 지역 코드페이지를 사용한다.
- 정규표현식 라이브러리 Updated
- Apache 2.0은 Perl호환 정규표현식 라이브러리 (Perl Compatible Regular Expression Library) (PCRE)를 포함한다. 이제 모든 정규표현식에 더 강력한 Perl 5 문법을 사용할 수 있다.
모듈에서 나아진 점
mod_ssl
- Apache 2.0에서 새로 추가되었다. 이 모듈은 OpenSSL이 제공하는 SSL/TLS 암호화 프로토콜의 인테페이스다.
mod_dav
- Apache 2.0에서 새로 추가되었다. 이 모듈은 웹컨텐츠를 올리고 관리하기위한 HTTP Distributed Authoring and Versioning (DAV) 표준을 구현한다.
mod_deflate
- Apache 2.0에서 새로 추가되었다. 네트웍 사용량을 줄이기위해 브라우저에게 컨텐츠를 압축해서 보내라고 요청할 수 있다.
mod_auth_ldap
- Apache 2.0.41에서 새로 추가되었다. 이 모듈은 HTTP
Basic Authentication에 사용하는 정보를 LDAP 데이터베이스에
저장한다. 관련된
mod_ldap
모듈은 연결풀(connection pool)을 제공하고, 결과를 캐싱한다. mod_auth_digest
- 공유메모리를 사용하여 프로세스간 세션 캐싱을 지원한다.
mod_charset_lite
- Apache 2.0에서 새로 추가되었다. 이 실험적인 모듈은 문자집합 변환과 문자집합 재작성 기능을 제공한다.
mod_file_cache
- Apache 2.0에서 새로 추가되었다. 이 모듈은 Apache 1.3의
mod_mmap_static
기능에 더 나은 캐쉬 기능을 추가했다. mod_headers
- 이 모듈은 Apache 2.0에서 더 유연해졌다. 이제
mod_proxy
가 사용하는 요청 헤더를 수정할 수 있고, 경우에 따라서 응답 헤더를 설정할 수도 있다. mod_proxy
- 이 프록시 모듈은 새로운 필터 구조를 이용하고 더 믿을만한
HTTP/1.1 프록시를 구현하기위해 완전히 재작성되었다. 추가로
새로운
<Proxy>
설정 섹션은 프록시 설정을 더 쉽게 (그리고 내부적으로 더 빠르게) 만든다. 과거<Directory "proxy:...">
설정은 이제 지원하지 않는다. 모듈은proxy_connect
,proxy_ftp
,proxy_http
와 같이 지원하는 프로토콜 별로 나눠졌다. mod_negotiation
- 새로운
ForceLanguagePriority
지시어는 클라이언트가 NOT ACCEPTABLE이나 MULTIPLE CHOICES 응답 대신 모든 경우 한 문서를 받음을 보장한다. 추가로 협상 알고리즘과 MultiViews 알고리즘이 더 일관된 결과를 내도록 수정되었고, 문서 내용을 포함할 수 있는 새로운 형식의 type map이 추가되었다. mod_autoindex
- 자동으로 생성된 디렉토리 목록이 이제 더 깔끔한 형식을 위해 HTML 표를 사용할 수 있게 되었고, 버전 정렬을 포함하여 정렬순서를 자세히 조절할 수 있으며, 디렉토리 목록을 와일드카드로 걸러낼 수 있다.
mod_include
- 새로운 지시어를 사용하여 SSI 요소의 기본 시작 태그와
마침 태그를 변경할 수 있고, 오류와 시간형식을 SSI 문서외에
주 설정파일에서도 설정할 수 있게 되었다. mod_include에서 (이제
Perl 정규표현식 문법으로) 정규표현식 파싱과 그룹의
결과를
mod_include
의$0
...$9
변수로 얻을 수 있다. mod_auth_dbm
- 이제
AuthDBMType
지시어를 사용하여 여러 DBM류 데이터베이스를 지원한다.