한 서버에서 여러 개의 도메인을 운영해야 할 때, 가장 기본이 되는 설정이 바로 Virtual Host입니다. 실제 웹호스팅 환경에서는 한 대의 서버에 200개에서 많게는 250개 이상의 계정(도메인)이 세팅되기도 합니다. 이런 환경에서는 도메인마다 웹 루트 디렉토리를 분리해 관리하지 않으면 보안과 유지보수 측면에서 많은 문제가 발생할 수 있습니다.
Apache 웹 서버는 이러한 요구를 충족시키기 위해 도메인별로 설정 파일을 따로 만들어 운용할 수 있도록 되어 있습니다. 이 글에서는 각 도메인에 맞게 웹 루트를 따로 구성하는 방법을 차근차근 설명해드리겠습니다.
** 모든 명령어는 SSH를 통해 root 권한으로 접속했을 때를 기준으로 합니다.
1. 설정 파일 복사 및 편집
먼저 Apache 설정 디렉토리로 이동해 기본 설정 파일을 복사한 뒤, 도메인 전용 설정 파일을 만듭니다.
# 아파치 vhost 설정 디렉토리로 이동
cd /etc/apache2/sites-available
# 새로운 설정 파일 생성
vi your-domain.conf
your-domain.conf
파일을 열고 다음과 같은 내용을 입력합니다.
<VirtualHost *:80>
# 설정할 도메인
ServerName your-domain.com
ServerAlias www.your-domain.com
ServerAdmin webmaster@localhost
# 설정할 디렉토리
DocumentRoot /var/www/your-folder
# 디렉토리 속성 설정
<Directory /var/www/your-folder>
Options FollowSymLinks MultiViews
AddType application/x-httpd-php .php .html .htm .xml
AllowOverride All
Require all granted
Order allow,deny
allow from all
</Directory>
# 로그파일 지정
ErrorLog ${APACHE_LOG_DIR}/your-domain-error.log
CustomLog ${APACHE_LOG_DIR}/your-domain-access.log combined
</VirtualHost>

your-domain.com (설정할 도메인)
, your-folder(설정할 폴더)
등은 실제 사용하는 도메인과 경로에 맞게 수정해 주세요.
2. 웹 루트 디렉토리 생성
설정한 DocumentRoot 경로는 실제로 존재해야 합니다. 아래 명령어로 디렉토리를 생성하고, 권한도 설정합니다.
# 설정한 경로에 폴더 생성
mkdir /var/www/your-folder

3. 설정 활성화 및 Apache 재시작
이제 만든 설정 파일을 활성화하고 Apache를 다시 불러옵니다.
# 설정파일 활성화
a2ensite your-domain.conf
# 아파치 재시작
systemctl reload apache2
기존 기본 설정을 비활성화하고 싶다면 아래 명령어를 추가로 실행합니다.
# 예시파일 비활성화
a2dissite 000-default.conf
또한 웹 브라우저에서 정상적으로 작동하는지 확인하려면, 설정한 웹 루트 디렉토리(/var/www/your-folder
)에 테스트용 index.php
파일을 만들어 두는 것이 좋습니다.
echo "<?php phpinfo(); ?>" > /var/www/your-folder/index.php
이렇게 하면 브라우저에서 접속했을 때 PHP 설정 정보를 출력해주는 페이지가 보이므로, Apache와 PHP가 제대로 연동되었는지 쉽게 확인할 수 있습니다.
4. 정상 동작 확인하기
브라우저를 열고 http://your-domain.com
으로 접속해보세요. 설정한 웹사이트가 정상적으로 출력된다면 Virtual Host 설정이 성공한 것입니다.

혹시 서버 환경이 공유기에 연결되어 있는 경우, 외부에서 접속하려면 포트포워딩 설정이 필요할 수 있습니다. 공유기에서 80번 포트를 해당 서버로 포워딩해야 웹사이트가 외부에서도 보이게 됩니다. 이 부분은 다음 포스팅에서 자세히 다룰 예정입니다.
Windows WSL 환경에서 웹서버를 구축한 경우, 도메인으로 접속했을 때 “방화벽 확인” 메시지가 출력된다면 80번 포트에 대한 방화벽 설정이 필요할 수 있습니다. 이 경우 아래 포스팅을 참고해 방화벽 규칙을 수정해 주세요.
이 설정 방식을 통해 도메인마다 별도의 웹 루트와 로그 파일을 관리할 수 있어, 보안성과 유지보수 효율성이 크게 향상됩니다. 특히 여러 개의 도메인을 하나의 서버에서 운용하는 웹호스팅 환경에서는 필수적인 설정이라 할 수 있습니다.