Apache2 Virtual Host


Apache2 가상 호스트 설정 (Apache2 Virtual Host Configuration)

가상 호스트의 개념 (Concept of Virtual Hosts)

가상 호스트(Virtual Hosts)는 하나의 물리적 서버에서 여러 도메인이나 웹사이트를 호스팅할 수 있도록 하는 Apache의 기능입니다. 이를 통해 하나의 서버에서 여러 웹사이트를 독립적으로 운영할 수 있습니다. 가상 호스트는 주로 두 가지 방식으로 구현됩니다: IP 기반 가상 호스트와 도메인 기반 가상 호스트.

IP 기반, 도메인 기반 가상 호스트 (IP-based and Domain-based Virtual Hosts)

  • IP 기반 가상 호스트(IP-based Virtual Hosts): 각 가상 호스트가 고유한 IP 주소를 가집니다. 즉, 서로 다른 IP 주소에 따라 다른 웹사이트를 제공합니다.
  • 도메인 기반 가상 호스트(Domain-based Virtual Hosts): 하나의 IP 주소에서 도메인 이름에 따라 다른 웹사이트를 제공합니다. 이는 가장 일반적으로 사용되는 방식입니다.

가상 호스트 설정 (Configuring Virtual Hosts)

단일 사이트 설정 (Single Site Configuration)

단일 사이트를 호스팅하는 가장 기본적인 가상 호스트 설정 예제입니다.

  1. 가상 호스트 설정 파일 생성: 기본 설정 파일(httpd.conf)에 포함시키거나 별도의 설정 파일을 생성합니다. 예: /etc/httpd/conf.d/example.com.conf
<VirtualHost *:80>
    ServerAdmin admin@example.com
    DocumentRoot "/var/www/example.com"
    ServerName www.example.com
    ServerAlias example.com
    ErrorLog "/var/log/httpd/example.com-error.log"
    CustomLog "/var/log/httpd/example.com-access.log" common
</VirtualHost>
  • ServerAdmin: 웹사이트 관리자 이메일 주소
  • DocumentRoot: 웹사이트 파일이 위치한 디렉토리
  • ServerName: 도메인 이름
  • ServerAlias: 추가 도메인 이름 (예: www.example.com과 example.com 모두 사용)
  • ErrorLog: 오류 로그 파일 경로
  • CustomLog: 접근 로그 파일 경로
다중 사이트 설정 (Multiple Sites Configuration)

여러 사이트를 동일한 서버에서 호스팅하는 예제입니다.

  1. 첫 번째 사이트 설정 파일 생성: 예: /etc/httpd/conf.d/site1.com.conf
<VirtualHost *:80>
    ServerAdmin admin@site1.com
    DocumentRoot "/var/www/site1.com"
    ServerName www.site1.com
    ServerAlias site1.com
    ErrorLog "/var/log/httpd/site1.com-error.log"
    CustomLog "/var/log/httpd/site1.com-access.log" common
</VirtualHost>
  1. 두 번째 사이트 설정 파일 생성: 예: /etc/httpd/conf.d/site2.com.conf
<VirtualHost *:80>
    ServerAdmin admin@site2.com
    DocumentRoot "/var/www/site2.com"
    ServerName www.site2.com
    ServerAlias site2.com
    ErrorLog "/var/log/httpd/site2.com-error.log"
    CustomLog "/var/log/httpd/site2.com-access.log" common
</VirtualHost>
IP 기반 가상 호스트 설정 (IP-based Virtual Host Configuration)

서버에 여러 IP 주소가 할당된 경우, 각 IP 주소에 대해 별도의 가상 호스트를 설정할 수 있습니다.

  1. 첫 번째 IP 주소에 대한 가상 호스트 설정:
<VirtualHost 192.168.1.101:80>
    ServerAdmin admin@site1.com
    DocumentRoot "/var/www/site1.com"
    ServerName www.site1.com
    ErrorLog "/var/log/httpd/site1.com-error.log"
    CustomLog "/var/log/httpd/site1.com-access.log" common
</VirtualHost>
  1. 두 번째 IP 주소에 대한 가상 호스트 설정:
<VirtualHost 192.168.1.102:80>
    ServerAdmin admin@site2.com
    DocumentRoot "/var/www/site2.com"
    ServerName www.site2.com
    ErrorLog "/var/log/httpd/site2.com-error.log"
    CustomLog "/var/log/httpd/site2.com-access.log" common
</VirtualHost>

가상 호스트 설정 파일 작성 및 적용 (Creating and Applying Virtual Host Configuration Files)

  1. 가상 호스트 설정 파일 작성: 위에서 설명한 형식으로 가상 호스트 설정 파일을 작성합니다.
  2. Apache 설정 파일에 포함: 가상 호스트 설정 파일을 httpd.conf 파일에 직접 포함시키거나, 별도의 디렉토리에 저장하여 Apache가 이를 읽도록 설정합니다.

httpd.conf 파일에 다음 줄을 추가하여 별도의 설정 파일을 포함시킬 수 있습니다.

IncludeOptional conf.d/*.conf
  1. 설정 파일 문법 검사: 설정 파일에 오류가 없는지 확인합니다.
sudo apachectl configtest
  1. Apache 서버 재시작: 설정 변경을 적용하기 위해 Apache 서버를 재시작합니다.
sudo systemctl restart httpd

예제: 기본 설정 파일

예를 들어 /etc/httpd/conf.d/example.com.conf 파일을 작성하여 가상 호스트 설정을 적용할 수 있습니다.

<VirtualHost *:80>
    ServerAdmin admin@example.com
    DocumentRoot "/var/www/example.com"
    ServerName www.example.com
    ServerAlias example.com
    ErrorLog "/var/log/httpd/example.com-error.log"
    CustomLog "/var/log/httpd/example.com-access.log" common
</VirtualHost>

이 설정을 통해, www.example.comexample.com 도메인에 대한 요청을 처리하며, DocumentRoot 디렉토리의 파일을 제공하게 됩니다. 각 가상 호스트는 별도의 로그 파일을 사용하여 쉽게 관리할 수 있습니다.

가상 호스트 설정을 통해 하나의 서버에서 여러 도메인을 효과적으로 관리하고 운영할 수 있습니다. 이를 통해 웹 호스팅 비용을 절감하고, 서버 자원을 효율적으로 사용할 수 있습니다.


Leave a Reply

Your email address will not be published. Required fields are marked *