Apache HTTPD for Windows

httpd-vhosts.conf

본 토픽은 현재 준비중입니다.공동공부에 참여하시면 완성 되었을 때 알려드립니다.

가상호스트(Virtual Host)

 가상 호스트는 일반적으로 클라이언트가 여러 IP / 도메인 / 포트 번호로 서버에 접속할 때 각각 다른 웹 사이트를 띄우기 위한 기술이다. 즉, 가상 호스트 설정을 통해 하나의 웹 서버로 여러 웹 사이트를 운영할 수 있다. 이 설정 파일은 그 각각의 가상 호스트에 대한 설정을 지정하는 파일이다. 사용하기 위해선 httpd.conf에서 #Include conf/extra/httpd-vhosts.conf 라인을 주석 해제 해야 한다. 현재 설정되어 있는 메인 서버의 설정과는 독립적으로 가상 호스트의 설정을 따로 지정할 수 있다. httpd.conf 설정 파일의 ''Main' server configuration' 주석 위치를 기준으로 메인 서버 설정이 시작되며 가상 호스트는 특별한 설정이 없는 한 이 설정을 기본값으로 한다.

 Apache에서 가상 호스트를 구성하는 방법은 크게 네 가지가 있다.

  • 이름 기반(Name-based) 가상 호스트
  • 포트 기반(Port-based) 가상 호스트
  • IP 기반(IP-based) 가상 호스트
  • 이름-IP 혼합 가상 호스트

 이 중 이름 기반 가상 호스트가 자주 사용된다. 클라이언트가 어떤 호스트 네임으로 서버에 접속했는가를 판별하여 각각 다른 가상 호스트와 연결해준다. 예를 들어, DNS에 example.com과 example2.com이 같은 IP로 배정되었다고 할 때 클라이언트는 물리적으로 같은 서버로 접속하게 된다. 하지만 이 때 요청해온 호스트 네임(도메인 주소)을 기반으로 다른 웹 페이지를 제공할 수 있다. 물론 서브 도메인으로 구분하는 것 또한 가능하다.

 포트 기반 가상 호스트도 동작 원리가 비슷하다.

 IP 기반 가상 호스트는 랜카드가 두 개 이상 장착되어 있어야 실직적인 효과가 있다. 똑같이 도메인 주소 대신 IP 주소를 넣으면 된다.

 <VirtualHost> 지시자 안에 들어갈 수 있는 호스트명은 IP 주소와 도메인 주소가 있다. 각각의 요청 호스트명에 따라 여러 사이트를 제공할 수 있다. _default_ 또는 *는 지정된 호스트 목록 외의 모든 요청에 대한 처리를 담당한다.

 처음 선언된 <VirtualHost> 섹션은 다른 <VirtualHost> 섹션의 ServerName 또는 ServerAlias에 대응되지 않는 나머지 모든 요청에 대한 처리를 담당한다.

 전형적인 가상 호스트 구문 예이다.

<VirtualHost *:80>
   ServerName example.com
   DocumentRoot "${SRVROOT}/htdocs/www"
   <Directory "${SRVROOT}/htdocs/www">
      Require all granted
   </Directory>
</VirtualHost>

 가상 호스트 안에서 선언되는 ServerName은 클라이언트가 받는 응답 메시지의 Host 헤더에 명시된다.

 Apache의 역사가 오래된 만큼 가상 호스트의 설정 문법도 다소 복잡해져서, 어느 정도 규칙을 지정해서 사용하는 것이 좋다. 시나리오 토픽에서 자세한 예제를 제공한다.

 하나의 웹 서버에 하나의 웹 사이트만 제공한다면 가상 호스트 기술을 사용하지 않아도 충분히 서비스할 수 있다. 메인 서버 설정만 건드리면 된다.

 하지만 추후 확장성을 고려해 가상 호스트를 사용하면서 단일 웹 사이트를 제공하려면 메인 서버 설정에서 DocumentRoot 및 <Directory> 지시자를 모두 주석 처리한 후, 각 웹 사이트에 대한 설정은 httpd-vhosts.conf 파일에서만 하는 것이 더 깔끔하다.

  • 봤어요 0명

댓글

댓글 본문