반응형

저는 Apache 웹서버를 이용해서 웹서비스를 하고 있습니다.
아아 서비스가 아니라 실습정도요?^^

얼마전 저에게 한 가지 과제가 생겼습니다.
한 컴퓨터에서 두 개의 도메인 이름으로 각기 다른 페이지를 서비스 할 수 있게하라!!

예를 들면 kkosseul.domain.net ksk.domain.net 이 서로 다른 페이지로 연결되도록 하라는 것이었습니다.

IIS에서는 걍 도메인만 추가하면 알아서 되는 걸로 알고 있는데 Apache에서는 어떻게 해야할까요??

구글링도 해보고 네이버 아저씨한테 물어봐도 다양한 답이 있지만 핵심을 찝어 주신 분들이 없더라구요.
혼자 삽질에 삽질 삽질을 거듭한 끝에 꼭 필요한 몇가지만으로 가능하다는 걸 알았습니다.

의외로 간단했습니다.
우선 이 작업을 위해서 DNS 서버에 제 IP주소에 대해서 CNAME으로 별명을 하나더 지어 줬습니다.
그러니깐 제 호스트 명이 ksk06 이라면, CNAME이 kkoseul이 되는 것이죠.

nslookup을 통해 확인해보면 같은 IP주소인 것을 확인 할 수 있습니다.



Apache는 text 파일을 이용해서 여러가지 설정을합니다.
이 파일 들은 Apache를 설치한 디렉토리 아래 conf 라는 디렉토리 내에 있죠.
그 중 httpd.conf 라는 파일을 엽니다.

이 파일에 서 제일 앞에 #을 포함한 줄은 모두 주석입니다. 즉 Apache가 읽어서 처리하는 부분이 아니라는 것이죠.
Ctrl+F 를 이용해서 Virtual hosts를 찾아보시면 아마 다음과 같은 부분을 찾으실 수 있을겁니다.
아마 두번째 줄이 주석으로 처리되어 있을건데 #을 지워서 주석을 풀어줍니다.

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

주석을 풀면 Apache가 시작되면서 설정들을 읽을 때 conf/extra/httpd-vhosts.conf 파일을 함께 읽게 됩니다.
그럼 그 다음 순서는 무엇일까요?
당연히 Apache가 읽어들일 httpd-vhosts.conf 파일을 우리가 원하는 동작을 하도록 수정해줍니다.

Apache 설치 디렉토리에서 conf/extra/httpd-vhosts.conf 파일을 열어봅시다.
파일을 열어보면 Virtual Hosts에 대한 설명들이 주석으로 적혀 있습니다.
중요한 부분은 다음 부분들입니다.
NameVirtualHost 000.000.000.000:00

<VirtualHost kkoseul.domain.net>
    DocumentRoot "C:\Dev\Apache2.2\htdocs\kkoseul"
</VirtualHost>

<VirtualHost ksk.domain.net>
    DocumentRoot "C:\Dev\Apache2.2\htdocs\ksk"
</VirtualHost>

NameVirtualHost에 가상 호스트의 이름을 적어줍니다.
포트번호는 안적으셔도 되지만 80번 포트로 들어온 요청에만 답하기 위해 저는 적어줬습니다.

<VirtualHost host.domain.net> 태그에 호스트 명을 적어줍니다. 호스트 이름을 적는 것이 가장 중요합니다.!!
이 호스트 이름과 같은 이름으로 접속을 요청한 가상 호스트로 연결시켜 주니깐요!!

그리고 <VirtualHost>와</VirtualHost> 사이에 서비스할 문서의 DocumentRoot "루트경로"를 지정해 줍니다.

<VirtualHost>내부에 호스트 이름, 로그파일 위치, 관리자 이메일 등등 여러가지 정보를 넣을 수 있습니다.
하지만 가상호스트가 동작하는 것만을 보여 드리기 위해서 다 지웠습니다.

이런 동작이 가능한 것은 우리가 웹 브라우저의 주소창에 입력한 주소 정보가 서버에 도달하면 서버는 그 주소를 해석해서 해당 주소와 같은 가상 호스트에 연결 시켜주기 때문입니다.

그리고 위의 httpd-vhosts.conf 파일의 내용을 그대로 httpd.conf 파일에 적어줘도 무관합니다.
하지만 설정파일의 가독성을 위해서는 파일을 따로 두고 include 시키는 방법이 더 나을 것 같네요.

위처럼 설정하면 브라우저를 통해 하나의 Apache 서버에서 둘 이상의 서비스가 뜨는 것을 확일 할 수 있습니다.
제가 서로 다른 디렉토리에 간단한 html 파일을 넣어두었는데 제대로 나타나는군요
(주소 뒤의 도메인 부분은 동일합니다. domain.net 이런 식으로여)



원래 웹서버를 운영하시던 분이라면 상관없겠지만
혹시나 그닥 요청량이 높지 않은 두 개 이상의 웹을 서비스 하기 위해서 컴퓨터를 두대 사버리는 실수를 범하지 않으시길 ^^
이상 Apache 초보의 가상호스트 설정이었습니다!!
반응형

+ Recent posts