본문 바로가기
[개발] Infrastructure/Linux

Apache httpd를 사용하여 Multiple VirtualHost 다루기

by Devsong26 2021. 8. 2.

Nginx를 많이 사용하다 Apache를 다루게 됐는데, 설정 방식이 다소 달랐다.

 

한 개의 서버에 Apache 하나로 qa, stag 서브도메인과 prod 서브도메인을 각각 다르게 설정해야 했다.

 

같이 알아보자.

 


 

Apache httpd는 설치 경로에 따라 설정 파일 위치가 다르다고 하는데, 설정 파일 이름은 httpd.conf이다.

아래는 전체 설정 코드이다.

# qa, stag 설정
<VirtualHost *:80>
        ServerName qa.example.com:80
        ServerAlias server stag.example.com server2
        ServerAdmin root@example.com
        DocumentRoot "/var/www/html/qa"
        CustomLog "logs/qa/access_log" combined
        ErrorLog "logs/qa/error_log"
        <Directory "/var/www/html/qa">
                Options Indexes FollowSymLinks
                AllowOverride None
                Require all granted
        </Directory>
</VirtualHost>


# prod 설정
<VirtualHost *:80>
        ServerName prod.example.com:80
        ServerAdmin root@example.com
        DocumentRoot "/var/www/html/prod"
        CustomLog "logs/prod/access_log" combined
        ErrorLog "logs/prod/error_log"
        <Directory "/var/www/html/prod">
                Options Indexes FollowSymLinks
                AllowOverride None
                Require all granted
        </Directory>
</VirtualHost>

 

qa, stag 서브 도메인으로 들어오는 http 요청은 "/var/www/html/qa" 디렉터리에 위치한 php 파일이 처리하고,

prod 서브 도메인으로 들어오는 http 요청은 "/var/www/html/prod" 디렉터리에 위치한 php 파일이 처리한다.

 

qa, stag 서브 도메인은 ServerAlias 속성으로 묶을 수 있다.

ServerAlias가 *.example.com 인 경우, 모든 example.com 서브 도메인은 qa 설정을 따른다.

특정 서브 도메인끼리 같은 설정을 지정하고 싶다면 server[n]으로 명시하여 설정할 수 있다.

 

<VirtualHost *:80>
	ServerName qa.example.com:80
        ServerAlias server stag.example.com server2
        ...
</VirtualHost>

 

동일 포트를 사용하는 복수의 서브 도메인이 있고, 서브 도메인마다 설정을 다르게 지정하고 싶다면 <VirtualHost>를 여러 개 선언하면 된다.

 

<VirtualHost *:80>	
        ...
</VirtualHost>

<VirtualHost *:80>	
        ...
</VirtualHost>

 

참고로 AWS 대상 그룹의 Health Check는 첫 번째 VirtualHost의 설정에 지정된 access_log에만 보인다.


 

검색 키워드

  • httpd virtualhost multiple server name
  • httpd same 80 other domain

 


더 많은 내용을 보시려면 아래를 참고하세요.


References