[6일차] 아파치 Virtual Host에 대해 알아보자
1. 이름 기반의 버추얼 호스트
1개의 IP에 2개의 도메인을 쓰는 경우 NameVirtualHost 지시자를 사용해야 한다.
ex) 192.168.123.2에 www.butterthlies.com과 sales.butterthlies.com 2개를 쓰고 싶은 경우
NameVirtual Host 192.168.123.2
<VirtualHost www.butterthlies.com>
ServerAdmin sales@butterthlies.com
DocumentRoot /usr/www/site.virtual/htdocs/customers
ServerName www.butterthlies.com
ErrorLog /usr/www/site.virtual/name-based/logs/error_log
CustomLog ...
</VirtualHost>
<VirtualHost sales.butterthlies.com>
ServerAdmin sales@butterthlies.com
DocumentRoot /usr/www/site.virtual/htdocs/salesmen
ServerName sales.butterthlies.com
ErrorLog /usr/www/site.virtual/name-based/logs/error_log
CustomLog ...
</VirtualHost>
※NameVirtualHost IP주소[:포트]
이름 기반의 Virtual Host를 쓴다는 의미의 지시자로 클라이언트로부터 NameVirtualHost로 설정된 IP:포트로 접속요청을 받으면 VirtualHost부분 중 매칭되는 도메인으로 연결해 주는 역할을 한다.
*:80 은 :80 80번포트로 들어오는 * (모든 IP요청)에 대하여가상호스트를 수행한다는 것이다. mod_ssl을 이용한 SSL을 사용할 것이라면 포트번호를 :443 과 같이 적용해야 한다. httpd -S 옵션으로 가상호스트 설정에 대한 점검을 할 수 있다.
2. IP 기반의 버추얼 호스트
HTTP/1.1 이전의 방식으로 지금은 거의 사용하지 않는 방식이다.
<VirtualHost 192.168.123.2>
ServerName www.butterthlies.com
ServerAdmin sales@butterthlies.com
DocumentRoot /usr/www/site.virtual/htdocs/customers
ErrorLog /usr/www/site.virtual/name-based/logs/error_log
CustomLog ...
</VirtualHost>
<VirtualHost 192.168.123.3>
ServerName sales.butterthlies.com
ServerAdmin sales@butterthlies.com
DocumentRoot /usr/www/site.virtual/htdocs/salesmen
ErrorLog /usr/www/site.virtual/name-based/logs/error_log
CustomLog ...
</VirtualHost>
3. 이름/IP 혼합 버추얼 호스트
위의 두가지를 혼합한 방식으로 NameVirtualHost로 지정되어 있는 <VirtualHost>부분은 이름 기반으로, 그외에는 IP기반으로 작동함
NameVirtual Host 192.168.123.2
<VirtualHost www.butterthlies.com>
ServerAdmin sales@butterthlies.com
DocumentRoot /usr/www/site.virtual/htdocs/customers
ServerName www.butterthlies.com
ErrorLog /usr/www/site.virtual/name-based/logs/error_log
CustomLog ...
</VirtualHost>
<VirtualHost sales.butterthlies.com>
ServerAdmin sales@butterthlies.com
DocumentRoot /usr/www/site.virtual/htdocs/salesmen
ServerName sales.butterthlies.com
ErrorLog /usr/www/site.virtual/name-based/logs/error_log
CustomLog ...
</VirtualHost>
<VirtualHost 192.168.123.3>
ServerName sales.butterthlies.com
ServerAdmin sales@butterthlies.com
DocumentRoot /usr/www/site.virtual/htdocs/salesmen
ErrorLog /usr/www/site.virtual/name-based/logs/error_log
CustomLog ...
</VirtualHost>
4. 포트 기반의 버추얼 호스트
Listen 80
Listen 8080
<VirtualHost 192.168.123.2:80>
ServerName www.butterthlies.com
ServerAdmin sales@butterthlies.com
DocumentRoot /usr/www/site.virtual/htdocs/customers
ErrorLog /usr/www/site.virtual/name-based/logs/error_log
CustomLog ...
</VirtualHost>
<VirtualHost 192.168.123.2:8080>
ServerName sales.butterthlies.com
ServerAdmin sales@butterthlies.com
DocumentRoot /usr/www/site.virtual/htdocs/salesmen
ErrorLog /usr/www/site.virtual/name-based/logs/error_log
CustomLog ...
</VirtualHost>
이렇게 Listen지시자를 쓰면 해당 포트를 아파치가 감시하도록 함 따라서 위와 같이 설정한 경우 http://www.butterthlies.com으로 접속한 경우 80번 포트로 접속하지만 http://www.butterthlies.com:8080으로 접속한다면 밑의 도메인으로 접속됨