Apache | 가상 호스트(VirtualHost) 설정 | IP 기반 가상 호스트

IP 기반 가상 호스트

IP 기반은 하나의 서버에 여러 개의 LAN 카드가 장착되어 있어, 여러 IP 주소를 있는 경우에 각각의 IP 주소에 대한 가상 호스트를 지정한다.

IP 기반 가상 호스트를 할당하려면 “VirtualHost"를 사용한다.

<VirtualHost IP주소1:포트번호>
  ...
  ...
</VirtualHost>

<VirtualHost IP주소2:포트번호>
  ...
  ...
</VirtualHost>

예를 들어, “192.168.1.1"와 “192.168.1.2” 2개의 IP 주소가 할당되어 있다면 DNS에 “ww1.devkuma.com"을 “192.168.1.1"으로 등록하고, “ww2.devkuma.com"을 “192.168.1.2"을 등록한다.

하나의 Apache에서 2개의 호스트에 대한 설정을 하려면 “httpd.conf” 혹은 “http-vhosts.conf” 파일에 다음과 같이 작성한다. (관리 측면으로 본다면 “httpd.conf” 보다는 “http-vhosts.conf"에 작성하는 것이 맞을 것이다. 상세한 내용은 “이름 기반 가상 호스트“를 참조한다.)

<VirtualHost 192.168.1.1:80>
    ServerName     ww1.devkuma.com
    ServerAdmin    devkuma@devkuma.com
    DocumentRoot   "${SRVROOT}/htdocs-ww1"
    CustomLog      logs/ww1.access.log common
    ErrorLog       logs/ww1.error.log
</VirtualHost>

<VirtualHost 192.168.1.2:80>
    ServerName     ww2.devkuma.com
    ServerAdmin    devkuma@devkuma.com
    DocumentRoot   "${SRVROOT}/htdocs-ww2"
    CustomLog      logs/ww2.access.log common
    ErrorLog       logs/ww2.error.log
</VirtualHost>

IP 주소마다 필요한 설정해야 한다. 예를 들어, “ww1.devkuma.com"에 액세스하게 되면 “192.168.1.1"에 설정된 도큐먼트 루트 “${SRVROOT}/htdocs-ww1"에 있는 내용이 반환된다.

VirtualHost마다 개별 설정을 작성할 수 있으므로 필요한 설정을 하도록 한다. 위에 작성된 것처럼 “ServerName"과 “DocumentRoot” 그리고 로그 관계는 개별적으로 설정하기를 추천한다. 물론 필수는 아니기에 공통된 설정하여도 상관은 없다.

그 외에도 각 도큐먼트 루트 액세스 권한 설정이 필요하다. “httpd.conf” 파일에서 아래와 같이 이 두 도큐먼트 루트에 적절한 권한을 설정한다.

<Directory "${SRVROOT}/htdocs-ww1">
    Require all granted
</Directory>

<Directory "${SRVROOT}/htdocs-ww2">
    Require all granted
</Directory>

실습

※ IP 기반 가상 호스트의 테스트가 가능한 환경이 없어서실제로 실습 및 확인 테스트을 못하고 작성되었다. 참고하길 바란다.




최종 수정 : 2019-12-10