가상 호스트란?
가상 호스트가 생겨난 가장 큰 이유는 작은 기업이나 개인같이 제한적인 IP를 가지고 있는 사람들도 몇 백개의 웹 호스팅을 할 수 있게 하기 위해서 였다. 이것은 제한적인 IP를 가지고 있는 사용자들에게는 대단한 희소식이었다. 이렇게 말로 설명해봤자, 잘 이해가 안 갈 것이다(나도 이해가 안 갔으니까!!). 예를 들어 203.241.128.94라는 IP를 가지고 있는 컴퓨터가 있다고 하자. 203.241.128.94의 호스트네임은 myfeel.hoseo.ac.kr이다. 기존에는 하나의 IP에 하나의 호스트네임을 가지고 웹 서비스를 했다. 하지만 가상호스트를 이용해서는 하나의 IP를 가지고 여러개의 호스트네임을 지정해서 줄 수가 있다. 그러니까 203.241.128.94 라는 IP를 myfeel.hoseo.ac.kr , fat.hoseo.ac.kr …..으로도 부를 수 있는 것이다. 한 마디로 웹 브라우저에서 myfeel.hoseo.ac.kr , fat.hoseo.ac.kr…..라고 쳐도 똑같은 페이지가 나온다는 말이다!! 물론 우리가 조금 뒤에 살펴 볼 httpd.conf 파일에 설정을 해주면 각기 다른 페이지가 나오게 할 수 있다.
설정 잡아주기
우선 name 서버의 설정을 해주어야 한다. 여기서는 203.241.128.94라는 IP주소를 두 개의 서로 다른 호스트네임이 가리키게 설정한다.
#cd /var/named/ #vi zone-myfeel.hoseo.ac.kr /*여기서는 'myfeel.hoseo.ac.kr'로 예를 들었다*/ ------------------------zone-myfeel.hoseo.ac.kr------------------------------- @ IN SOA ns1.myfeel.hoseo.ac.kr. master.myfeel.hoseo.ac.kr. ( 1997022700 ; serial 28800 ; refresh 14400 ; retry 3600000 ; expire 86400 ; default_ttl ) IN NS ns1.myfeel.hoseo.ac.kr. IN A 203.241.128.94 IN HINFO "x86 Pentium III Dual" "Wow Linux" IN MX 10 myfeel.hoseo.ac.kr. localhost IN A 127.0.0.1 ;ns IN CNAME @ ns1 IN CNAME @ ns2 IN A 211.180.229.51 bummi IN A 203.241.128.99 fat IN A 203.241.128.94 /*이 부분을 유심히 보자!!*/ myfeel IN A 203.241.128.94 /*이 부분을 유심히 보자!!*/
마지막 두줄을 보면 한 개의 IP를 두 개의 호스트네임이 지정된 것을 볼 수 있다. 저장 한 후에 name서버를 재 시동 시키자!! 그리고 제대로 설정이 잡혔는지 확인해 보자.
#nslookup fat Server: myfeel.hoseo.ac.kr Address: 203.241.128.94 Name: fat.myfeel.hoseo.ac.kr Address: 203.241.128.94
제대로 설정이 잡혔다면 위와 같이 나올 것이다. 결과가 달라야 한다(필자가 굳이 설명하지 않아도 알 것이다!!).
httpd.conf 설정하기
아파치 설정의 대표적인 파일인 httpd.conf 파일을 설정 해보자!
#vi httpd.conf ------------httpd.conf---------- # If you want to use name-based virtual hosts you need to define at # least one IP address (and port number) for them. # #NameVirtualHost 12.34.56.78:80 NameVirtualHost 203.241.128.94 /*자신의 IP주소를 적어준다*/ # <VirtualHost 203.241.128.94> /*똑같이 적어준다*/ ServerAdmin root@myfeel.hoseo.ac.kr /*관리자의 메일주소이다*/ DocumentRoot /usr/local/apache/htdocs /*문서 저장 경로이다*/ ServerName myfeel.hoseo.ac.kr /*설정해 준 호스트네임을 적어준다*/ ErrorLog /usr/local/apache/logs/error_log /*에러로그파일의 경로이다*/ CustomLog /usr/local/apache/logs/access_log common /*access 로그파일의 경로이다*/ </VirtualHost> <VirtualHost 203.241.128.94> /*똑같이 적어준다*/ ServerAdmin root@myfeel.hoseo.ac.kr /*관리자의 메일주소이다*/ DocumentRoot /usr/local/apache/htdocs/mail /*문서 저장 경로이다*/ ServerName fat.myfeel.hoseo.ac.kr /*설정해 준 호스트네임을 적어준다*/ ErrorLog /usr/local/apache/logs/error_log /*역시 위와 같다*/ CustomLog /usr/local/apache/logs/access_log common /*역시 위와 같다*/ </VirtualHost> <VirtualHost _default_:*> </VirtualHost>
httpd.conf 파일의 맨 아래를 보면 위와 같은 부분이 나온다. 웹서버를 재 시동한다.
웹 브라우저를 띠워 2개의 호스트주소를 적어보자!! 서로 다른 경로의 페이지가 나온다면 성공이다.
※ 다음은 위와는 반대로 두 개의 IP를 한 개의 웹서버에서 서비스 하는 방법을 알아보자.
123.456.789.123, 203.241.128.99 의 IP가 있다고 하자. 우선 랜카드에는 원래 123.456.789.123을 쓰고 있다. 그럼 203.241.128.99번을 추가시키자! 다음과 같이…
$ifconfig eth0:0 203.241.128.94 up /*여기서 123.456.789.123은 임의로 준 IP이다*/ $route add default gw 123.456.789.123 eth0:0 /*여기도 위와 같다*/
위의 경우는 하나의 랜카드에 하나의 IP주소를 할당할 때를 예로 든 경우이고, 만일 하나의 랜카드에 IP를 계속 추가하고 싶다면 다음과 같이 해주면 된다.
$ifconfig eth0:1 123.456.789.123 up $route add default gw 123.456.789.123 eth0:1
늘어날 때마다
eth0:1 eth0:2
위와 같은 방식으로 해주면 된다. name 서버에다가 새로운 IP와 호스트네임을 등록시키자!!
이제는 httpd.conf 파일을 설정해 줄 차례다. 위와 다른지 않지만 그래도 한번 보자!!
--------------------httpd.conf------------------ <VirtualHost 203.241.128.99> ServerAdmin root@myfeel.hoseo.ac.kr DocumentRoot /usr/local/apache/htdocs ServerName bummi.hoseo.ac.kr ErrorLog /usr/local/apache/logs/error_log CustomLog /usr/local/apache/logs/access_log common </VirtualHost> <VirtualHost 203.241.128.94> ServerAdmin root@myfeel.hoseo.ac.kr DocumentRoot /usr/local/apache/htdocs/login ServerName myfeel.hoseo.ac.kr ErrorLog /usr/local/apache/logs/error_log CustomLog /usr/local/apache/logs/access_log common </VirtualHost>
위와 같이 설정한 후에 웹 서버를 재시동한다. 그리고 웹 브라우저를 띠운 후에 각각의 IP, 호스트네임으로 접속해 보자. 역시 설정한 대로 페이지가 뜬다면 제대로 설정이 된 것이다.