서브 도메인(Sub Domain)을 사용할 경우 소유하고 있는 도메인을 세분화하여 각각 서로 다른 사이트나 서비스에 연결시킬 수 있습니다.
예를 들어 mydomain.com 이라는 도메인을 사용하고 있을 때, 다음과 같이 이들을 세분화하여 각각 다른 사이트나 서비스에 연결시킬 수 있습니다.
- www.mydomain.com -> 사이트 A
- sub1.mydomain.com -> 사이트 B
- sub2.mydomain.com -> 서비스 A
가상 호스트(Virtual Host)는 하나의 서버에 여러 사이트나 서비스를 운영하는 기법을 의미합니다. 가상 호스팅은 서버가 하나의 IP주소를 갖는 'Name-based Virtual Host'와, 서버가 여러 개의 IP주소를 갖는 'IP-based Virtual Host' 기법으로 나뉩니다.
이에 대한 상세한 설명은 다은 Apache 메뉴얼 페이지에 자세히 설명되어 있습니다.
http://httpd.apache.org/docs/2.2/vhosts/
이 글에서는 서브도메인 및 가상호스트 설정을 통해 다음과 같이 하나의 서버에 두 개의 웹사이트를 운영하는 방법을 예시로 들도록 하겠습니다.
- http://www.tuwlab.com → /var/www/tuwlab
- http://batto.tuwlab.com → /var/www/batto
도메인 등록
사용하는 도메인이 연결된 DNS서비스에 접속해서, 다음과 같이 호스트 이름을 등록합니다. IP-based Virtual Host이므로 사용하려는 도메인이 모두 같은 IP주소를 가리키도록 설정합니다.
DNSEver에서 DNS를 관리하는 경우, 다음과 같이 '다이나믹 DNS 관리'에 설정하면 됩니다.
가상 호스트 설정파일 작성
Apache의 사이트 설정 파일인 /etc/apache2/sites-available/my-site를 다음과 같이 작성합니다.
<VirtualHost *:80> ServerName www.tuwlab.com DocumentRoot /var/www/tuwlab </VirtualHost> <VirtualHost *:80> ServerName batto.tuwlab.com DocumentRoot /var/www/batto </VirtualHost>
'*:80'은 80번 포트로 들어오는 모든 IP주소에 대한 요청을 의미합니다.
Wildcard(*)를 사용하여 이런 형태로 작성해두면 유동 IP등의 환경에 의해 IP주소가 변경되더라도 환경설정 파일을 다시수정할 필요가 없습니다.
특정 IP(ex. 111.222.333.444) 및 다른 포트번호(ex. 8080)에 대한 요청을 기술할 때는 <VirtualHost 111.222.333.444:8080>의 형태로 작성하면 됩니다.
설정을 마쳤으면 다음 명령어를 입력하여 사이트를 활성화시키고 Apache를 재시작합니다.
sudo a2ensite my-site sudo service apache2 restart