Apache | 가상 호스트(VirtualHost) 설정 | 가상 호스트 별칭 설정 (ServerAlias)
가상 호스트 별칭 설정 (ServerAlias)
이름 기반 가상 호스트의 설정이 되었을 때, 등록되지 않은 호스트명으로 액세스된 경우에 어떻게 되는 보도록 하겠다.
예를 들어, DNS (또는 hosts 파일)의 다음과 같은 작성이 되어 있다고 하자.
127.0.0.1 localhost
127.0.0.1 ww1.devkuma.com
127.0.0.1 ww2.devkuma.com
이에 대해 가상 호스트가 “ww1.devkuma.com"과 “ww2.devkuma.com"만 설정이 되어 있다고 하자.
<VirtualHost *: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 *: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>
이러한 경우에 “http://localhost"에 대한 액세스가 되면, 먼저 등록되어 있는 가상 호스트 설정인 기본값으로 적용된다.
여기서는 먼저 등록된 가상 호스트 “ww1.devkuma.com"가 표시되었다.
이러한 때, 가상 호스트 설정이 되어 있지 않은 호스트에 대해 기본이 아닌 호스트의 설정을 적용할 수 있다. “ServerAlias"를 사용하여 가상 호스트 설정에 별칭으로 등록한다.
ServerAlias 호스트명1 호스트명2 ...
여러 호스트명을 등록하고자하는 경우에는 공백으로 구분 이어서 작성한다.
실습
그럼 실제 실습을 해보도록 하겠다. “http://localhost/“에 대한 액세스도 “ww2.devkuma.com “설정이 적용되도록 ww2.devkuma.com"에 ServerAlias으로 “localhost"를 등록한다.
<VirtualHost *: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 *:80>
ServerName ww2.devkuma.com
ServerAdmin devkuma@devkuma.com
DocumentRoot "${SRVROOT}/htdocs-ww2"
CustomLog logs/ww2.access.log common
ErrorLog logs/ww2.error.log
ServerAlias localhost
</VirtualHost>
이제 준비는 완료하였다. Apache를 재시작한 후 다시 “http://localhost/“에 액세스해 본다.
이번에는 기본 설정이 아닌 별칭 설정된 “ww2.devkuma.com"가 표시되었다.
최종 수정 : 2019-12-10