Apache HTTP Server Version 2.0
1.3에서 2.0으로 업그레이드
우리는 기존 아파치 사용자가 업그레이드하는 것을 돕기위해
중요한 정보를 알려주는 문서를 제공한다. 이 문서는 간단한
요약이므로, 새로운 기능
문서나 src/CHANGES
파일에서 정보를 찾아봐야
한다.
컴파일시 구성 변화
- 아파치는 이제 아파치 컴파일과 설치를 위해
autoconf
와libtool
시스템을 사용한다. 이 시스템의 사용법은 Apache 1.3의 APACI 시스템과 같지는 않지만 비슷하다. - 컴파일 여부를 선택할 모듈외에 Apache 2.0은 요청을 처리하는 주요 부분을 다중처리 모듈 (Multi-Processing Modules) (MPM)로 옮겼다.
실행시 설정 변화
- Apache 1.3에서 서버 핵심에 있었던 많은 지시어들이
이제는 MPM에 있다. 서버가 Apache 1.3과 최대한 비슷하게
동작하길 바란다면
prefork
MPM을 선택해야 한다. 다른 MPM은 다른 지시어를 사용하여 프로세스 생성과 요청의 처리를 조절한다. - proxy 모듈은 HTTP/1.1에
맞추어 수정되었다. 중요한 변화중 하나는 이제 프록시 접근제어가
<Directory proxy:>
블록이 아니라<Proxy>
블록에 위치하는 점이다. - 몇몇 모듈에서
PATH_INFO
(진짜 경로명 뒤에 나오는 경로 정보) 처리 방식이 변경되었다. 전에 핸들러였지만 이제 필터로 구현되는 모듈은 더 이상PATH_INFO
가 있는 요청을 받아들이지 못한다. INCLUDES나 PHP와 같은 필터는 core 핸들러 위에 구현되기때문에PATH_INFO
가 있는 요청을 거부한다. core 핸들러가PATH_INFO
가 있는 요청을 받아들이고 server-side include에서PATH_INFO
를 사용하게 하려면,AcceptPathInfo
지시어를 사용해야 한다. CacheNegotiatedDocs
지시어는 이제 아규먼트로on
과off
를 받는다. 기존의CacheNegotiatedDocs
는CacheNegotiatedDocs on
으로 수정해야 한다.-
ErrorDocument
지시어는 더이상 메세지를 나타내는 아규먼트 앞에 따옴표를 사용하지 않는다. 대신 쌍따옴표로 메세지를 묶어야 한다. 예를 들어 과거는 다음과 같이 수정해야 한다.ErrorDocument 403 "Some Message
두번째 아규먼트가 유효한 URL이나 경로명이 아니라면 메세지로 간주한다.ErrorDocument 403 "Some Message"
AccessConfig
와ResourceConfig
지시어는 사라졌다. 기존에 사용하던 지시어는 같은 기능을 하는Include
지시어로 대체할 수 있다. 과거에 설정파일에서 이 지시어들을 사용하지않고 이 지시어들의 기본값을 사용했다면,http.conf
에Include conf/access.conf
와Include conf/srm.conf
를 추가할 필요가 있다. 아파치가 이전 지시어와 같은 순서로 설정파일을 읽게하려면Include
지시어를httpd.conf
끝에 두고,srm.conf
이access.conf
앞에 나와야 한다.BindAddress
와Port
지시어는 사라졌다. 더 유연한Listen
지시어가 같은 기능을 한다.- Apache-1.3에서
Port
는 자기참조 URL의 포트 번호를 설정하는 일도 했다. Apache-2.0에서 이 기능은 새로운ServerName
으로 한다. 한 지시어에 호스트명과 자기참조 URL을 위한 포트 번호를 같이 설정할 수 있다. ServerType
지시어는 사라졌다. 요청을 서비스하는 방법은 이제 MPM 선택에 달렸다. 현재 inetd에서 시작하도록 설계된 MPM은 없다.AgentLog
,RefererLog
,RefererIgnore
지시어를 제공한mod_log_agent
와mod_log_referer
모듈이 없어졌다. agent 로그와 referer 로그는mod_log_config
의CustomLog
지시어를 사용하여 계속 제공된다.AddModule
과ClearModuleList
지시어는 사라졌다. 이 지시어들은 모듈을 올바른 순서로 활성화하려고 사용했다. 새로운 Apache 2.0 API는 모듈이 활성화되는 순서를 명시적으로 지정할 수 있어서, 이 지시어들이 필요없게 되었다.FancyIndexing
지시어가 없어졌다.IndexOptions
지시어의FancyIndexing
옵션이 같은 기능을 한다.mod_negotiation
의 MultiViews 내용협상이 더 엄격하게 기본파일을 찾는다. 내용협상은 협상가능한 파일 중에서만 선택한다.MultiviewsMatch
지시어를 사용하여 이전과 같이 동작하게 할 수 있다.- (2.0.51 버전 이후)
ErrorHeader
지시어는 잘못된 명칭으로, 이 지시어가 담당한 기능은Header
지시어로도 가능하다. 원하는 기능을 위해,Header always set 어쩌고 저쩌고
와 같이 설정한다.
기타 변화
- Apache 1.3에서 실험적이였던
mod_auth_digest
모듈이 이제 표준 모듈이 되었다. - Apache 1.3에서 실험적이였던
mod_mmap_static
모듈이mod_file_cache
로 대체되었다. - 배포본이 완전히 새로 구성되어 더이상 독립된
src
디렉토리가 없다. 대신 소스는 주 배포본 디렉토리 아래 논리적으로 구성되있고, 컴파일한 서버는 다른 디렉토리로 설치된다.
제삼자가 만든 모듈
Apache 2.0에서 서버 API가 많이 변경되었다. Apache 1.3 API에 맞춰진 기존 모듈을 수정없이 Apache 2.0에서 사용할 수 없다. 자세한 정보는 개발자 문서를 참고하라.