Apache HTTP Server Version 2.4

Apache > HTTP Server > Documentation > Version 2.4 > 가상호스트

# 아파치 IP기반 가상호스트 지원

이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요.

### 참고

- 이름기반 가상호스트 지원

## 시스템 요구사항

IP기반이란 말이 의미하듯이 서버는 IP기반 가상호스트 각각에 대해 다른 IP 주소를 가져야한다. 이는 컴퓨터를 물리적으로 여러 네트웍에 연결하거나, 최근 운영체제에서 지원하는 가상 인터페이스를 (자세한 내용은 시스템 문서를 참고하라. 흔히 "ip aliases"라고 하며, 보통 "ifconfig" 명령어로 만든다) 사용하여 가능하다.

## 아파치 설정방법

여러 호스트를 지원하도록 아파치를 설정하는 방법은 두가지다. 하나는 각 호스트마다 별도의 웹서버를 실행하는 법이고, 다른 하나는 모든 가상호스트를 지원하는 서버 한개를 실행하는 방법이다.

언제 여러 서버를 사용하나:

- 회사2의 사용자가 웹이외의 방법으로 회사1의 자료를 읽을 수 없게 하는 등 보안상 구분이 필요한 경우. 이 경우 두 서버를 각각 다른 `User`, `Group`, `Listen`, `ServerRoot` 설정으로 실행해야 한다.
- 충분한 메모리가 있고, 컴퓨터의 모든 IP를 기다리기위한 파일기술자(file descriptor) 요구사항도 만족한다. "와일드카드"나 특정 주소를 `Listen`할 수만 있다. 그래서 어떤 이유에서건 특정 주소를 기다릴 필요가 있다면, (한 웹서버가 한 주소를 제외한 모든 주소를 기다리고 다른 한 웹서버가 제외한 주소를 기다릴 수 있지만) 지정한 주소 모두를 기다려야 한다.

언제 서버 한개를 사용하나:

- 가상호스트들의 웹서버 설정을 공유할 수 있는 경우.
- 컴퓨터가 매우 많은 요청을 서비스한다면 여러 서버를 실행하기에 속도 손실이 클 수 있다.

## 여러 서버를 실행하기

각 가상호스트별로 웹서버를 설치한다. 설정파일의 `Listen` 지시어에 서버가 서비스할 IP 주소(혹은 가상호스트)를 적어준다. 예를 들면,

`Listen www.smallco.com:80`

호스트명 보다는 IP 주소를 사용하길 바란다. (DNS 문제 참고)

## 서버 하나로 가상호스트 실행하기

이 경우 웹서버 한개로 주서버와 모든 가상호스트에 대한 요청을 서비스한다. 설정파일의 `VirtualHost` 지시어에 가상호스트마다 다른 `ServerAdmin`, `ServerName`, `DocumentRoot`, `ErrorLog`, `TransferLog`, `CustomLog` 지시어 값을 설정한다. 예를 들면,

`<VirtualHost www.smallco.com>
ServerAdmin webmaster@mail.smallco.com
DocumentRoot /groups/smallco/www
ServerName www.smallco.com
ErrorLog /groups/smallco/logs/error_log
TransferLog /groups/smallco/logs/access_log
</VirtualHost>
<VirtualHost www.baygroup.org>
ServerAdmin webmaster@mail.baygroup.org
DocumentRoot /groups/baygroup/www
ServerName www.baygroup.org
ErrorLog /groups/baygroup/logs/error_log
TransferLog /groups/baygroup/logs/access_log
</VirtualHost>`

호스트명 보다는 IP 주소를 사용하길 바란다. (DNS 문제 참고)

VirtualHost 지시어 안에서는 프로세스 생성과 기타 몇몇 지시어를 제외하고 거의 모든 설정지시어를 사용할 수 있다. VirtualHost 지시어 안에서 지시어를 사용할 수 있는지 알려면 지시어 목록에서 사용장소를 확인하라.

suEXEC 프로그램을 사용한다면 VirtualHost 지시어 안에 `User`와 `Group`을 사용할 수 있다.

보안: 서버를 실행하는 사용자외에 다른 사람에게 로그파일이 있는 디렉토리의 쓰기권한이 있다면 보안 문제를 조심하라. 자세한 내용은 보안 팁을 참고하라.