Apache HTTP Server Version 1.3

Module mod_vhost_alias

- 번역 : 김칠봉 <san2(at)linuxchannel.net>
- 작성일 : 2000.12.29

이 모듈은 다이나믹하게 설정한 대형 가상 호스팅을 지원한다.

Status: Extension
Source File: mod_vhost_alias.c
Module Identifier: vhost_alias_module
Compatibility: Apache 1.3.7 버전과 그 이후의 버전

개요

이 모듈은 다이나믹하게 설정된 가상 호스트를 지원(생성)한다. 즉, 이 가상 호스트는 IP 주소와 호스트 이름에 의해서 구성되어지며, 이 호스트 이름에는 HTTP 요청 헤더를 사용하고, 요청 헤더(가상호스트)는 서비스할 파일 경로의 각 부분들을 이용한다. 이는 비슷한 구성을 가진 아주 거대한 가상 호스트를 사용하는데 용이하다.

*역주)
참고 - mod_vhost_alias 모듈의 추가 여부(아파치 1.3.14 기준)
1. 아무런 옵션없이 컴파일하여 설치할 경우 : X
2. --enable-module=all 옵션 추가시 : O
3. --enable-module=all --enable-shared=max : DSO 모듈로 사용가능
4. --enable-module=all --enable-shared=remain : DSO 모듈로 사용가능
5. --enable-shared=remain : DSO 모듈로 사용가능
6. --enable-shared=max : X

지시자

관련 지시자: UseCanonicalName

디렉토리 이름 재구성*

이 모듈에서 사용하는 모든 지시자는 특정 문자열을 경로(pathname)로 다시 만든다. 삽입된 특정 문자열(이하 "이름")은 서버 이름(어떻게 이름이 구성되는지 UseCanonicalName지시자를 참고)이거나 점(.)이 들어간 가상 호스트 형식의 IP 주소이다. 디렉토리를 구성할 각각의 개체는 다음과 같다.

*역주)
원제목은 "Directory Name Interpolation"임.

%%
% 추가
%p
가상 호스트의 포트 번호 추가
%N.M
호스트 이름의 각  부분 추가
NM은 호스트 이름의 각 부분들을 기술하는데 사용된다. 즉 N은 호스트 이름에서 각 점(.)으로 분리된 N 번째 부분을 뜻하며 MN에서 M 번째 부분에 속하는 문자를 의미한다. M은 옵션사항이며 M 값이 주어지지 않는다면 기본값은 zero(0)이다. 디렉토리 이름에 사용할 삽입어구는 다음과 같다.
0
전체 호스트 이름(FQDN : Fully Qualified Domain Name)
1
첫번째 부분
2
두번째 부분
-1
마지막 부분
-2
마지막에서 두번째 부분
2+
두번째 부분과 나머지 뒷부분
-2+
마지막에서 두번째 부분과 그 앞부분의 모두
1+-1+
0과 동일(전체 호스트 이름)
만약 N이나 M이 사용가능한 부분의 숫자보다 더 크다면 하나의 밑줄(_)로 디렉토리를 재구성한다.

보기

간단한 이름 기반 가상호스트 설정은 다음과 같다.
UseCanonicalName        Off
VirtualDocumentRoot     /usr/local/apache/vhosts/%0
http://www.example.com/directory/file.html 요청은 /usr/local/apache/vhosts/www.example.com/directory/file.html파일로 매치된다. 이 예는 많은 가상호스트를 지원하기 위해서 가상호스트의 디렉토리 수를 줄여서 파일을 정돈하는 좋은 아이디어이다. 이 방법을 다음과 같이 설정할 수 있다.
UseCanonicalName        Off
VirtualDocumentRoot     /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2
http://www.example.isp.com/directory/file.html 요청은 /usr/local/apache/vhosts/isp.com/e/x/a/example/directory/file.html 파일로 매치된다. 다음의 예는 이름의 끝 부분을 더 쪼개어 좀더 파일을 확산시킨 예이다.
VirtualDocumentRoot     /usr/local/apache/vhosts/%3+/%2.-1/%2.-2/%2.-3/%2
이는 /usr/local/apache/vhosts/isp.com/e/l/p/example/directory/file.html 이와 같은 파일 요청이 될 것이다. 관련된 사용 예 :
VirtualDocumentRoot     /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2.4+
/usr/local/apache/vhosts/isp.com/e/x/a/mple/directory/file.html 이와 같은 파일 요청 될 것이다.

다음은 IP 기반 가상 호스트 설정의 예이다.

UseCanonicalName DNS
VirtualDocumentRootIP   /usr/local/apache/vhosts/%1/%2/%3/%4/docs
VirtualScriptAliasIP    /usr/local/apache/vhosts/%1/%2/%3/%4/cgi-bin
만약 www.example.com의 IP 주소가 10.20.30.40와 같다면 http://www.example.isp.com/directory/file.html 파일 요청은 /usr/local/apache/vhosts/10/20/30/40/docs/directory/file.html 파일과 패치된다. 또한 CGI 스크립트 요청이 http://www.example.isp.com/cgi-bin/script.pl 이와 같다면 이것은 /usr/local/apache/vhosts/10/20/30/40/cgi-bin/script.pl 파일과 매치된다.

VirtualDocumentRoot 지시자에서 점(.) 문자를 포함하고 싶다면 이는 % 와 충돌한다. 다음과 같은 방법으로 해결할 수 있다.

VirtualDocumentRoot     /usr/local/apache/vhosts/%2.0.%3.0
http://www.example.isp.com/directory/file.html 파일 요청은 /usr/local/apache/vhosts/example.isp/directory/file.html 파일과 매치된다.

이 모듈에서 LogFormat 지시자로  %V%A 를 조합해서 유용하게 사용할 수 있다.

*역주)
LogFormat 스트링 :
%v : 클라이언트 요청에 따른 서버의 canonical 서버네임
%V : UserCannonicalName 지시자 설정에 따른 서버네임
%a : 원격의 IP 주소
%A : 로컬 시스템의 IP 주소


VirtualDocumentRoot

Syntax: VirtualDocumentRoot interpolated-directory
Default: None
Context: server config, virtual host
Status: Extension
Module: mod_vhost_alias
Compatibility: Apache 1.3.7 버전과 그 이후의 버전

이 지시자는 아파치가 서버 네임을 통해서 문서의 기본이 되는 위치를 찾기 위해서 사용한다. interpolated-directoryDocumentRoot 지지자 구문과 같은 비슷한 방법으로 문서 구조상 root로 사용한다. 만약 interpolated-directory 설정이 없다면 VirtaulDocumentRoot 지시자는 Off 된 것과 같다. 이 지시자는 VirtualDocumentRootIP 지시자 구문과 같은 방법으로 사용되지 않는다.


VirtualDocumentRootIP

Syntax: VirtualDocumentRootIP interpolated-directory
Default: None
Context: server config, virtual host
Status: Extension
Module: mod_vhost_alias
Compatibility: Apache 1.3.7 버전과 그 이후의 버전

이 지시자는 서버네임으로 연결하는 방법 대신 IP 주소로 연결하는 것 외에는 VirtualDocumentRoot 지시자 사용방법과 비슷하다.


VirtualScriptAlias

Syntax: VirtualScriptAlias interpolated-directory
Default: None
Context: server config, virtual host
Status: Extension
Module: mod_vhost_alias
Compatibility: Apache 1.3.7 버전과 그 이후의 버전

이 지시자는 아파치가 CGI 스크립트가 어디에 있는지 찾기 위해서 사용된다. 사용방법은 VirtualDocumentRoot 지시자 사용방법과 비슷하다. URL이 /cgi-bin/과 같이 시작되는 요청은 ScriptAlias/cgi-bin/과 같이 설정하는 방법과 비슷하다.


VirtualScriptAliasIP

Syntax: VirtualScriptAliasIP interpolated-directory
Default: None
Context: server config, virtual host
Status: Extension
Module: mod_vhost_alias
Compatibility: Apache 1.3.7 버전과 그 이후의 버전

이 지시자는 서버네임으로 연결하는 방법 대신 IP 주소로 연결하는 것 외에는 VirtualScriptAlias 지시자 사용바법과 비슷하다.


Apache HTTP Server Version 1.3