Linux

[Linux] 가상 호스트 (Virtual Hosts)

TTOII 2022. 3. 11. 12:35
728x90

✅ 가상 호스트 (Virtual Hosts)

https://rma7.tistory.com/73

  • 가상 호스트란 기본적으로 웹 서버에 존재하는 주 호스트 예를 들어 (aaa.com) 이라는 도메인을 사용하고 있지만 한 서버에 (bbb.com) / (ccc.com) 등 여러 도메인을 등록하여 사용하는 것이다. 
  • 가상 호스트 서버를 이용해 제한된 공간 안에서 여러개의 홈페이지를 제공해주는 서비스(웹, 메일 등)가 호스팅 서비스이다. 

 

✅ 가상 호스트 종류

이름 기반의 가상호스트 (Name-based virtual host)
주소 기반의 가상호스트 (IP-based virtual host)
포트 기반의 가상호스트 (Port-based virtual host)
기본 가상호스트 (Default virtual host)

이름 기반의 가상호스트 (Name-based virtual host)

https://rma7.tistory.com/73

  • 하나의 IP address에 여러개의 가상 호스트를 운영하는 것

 

주소 기반의 가상호스트 (IP-based virtual host)

  • 가상 호스트 각각에 하나씩의 IP address를 할당하여 운영하는 것
  • 이름 기반의 가상호스트 보다 안정적이고 더 효율적이며 관리하기 쉽다.
  • 각각의 웹 사이트를 하나의 물리적인 서버에서 별도로 관리할 수 있다. (전환이 쉽다.)

 

포트 기반의 가상호스트 (Port-based virtual host)

  • 동일한 호스트에 포트만 다르게 지정하여 운영
  • 80번이 주 호스트이고, 8080, 8081, 8082와 같이 순서대로 포트를 지정해 가상 호스트를 할당한다.

 

 

기본 가상호스트 (Default virtual host)

  • 가상 호스트를 운영하지만 매칭되지 않는 호스트로 접속되었을 때 기본으로 응답할 호스트를 지정하는 것

✅ 가상 호스트 설정 파일

/etc/httpd/conf.d/site1.conf

<VirtualHost 192.168.0.1:80># 블록의 기본 태그, 해당 IP와 포트 고려
    DocumentRoot /srv/site1/www # DocumentRoot 정의 가상호스트 내에서만 유효
    ServerName site1.example.com # 가상호스트 도메인네임 ServerAlias문이 사용될 수도 있음
    ServerAdmin webmaster@site1.example.com # 가상 호스트 관리자의 이메일 주소
    ErrorLog "logs/site1_error_log" # 가상호스트 오류 메시지 위치 CustomLog "logs/site1_access_log" combined # 가상 호스트 액세스 메시지
</VirtualHost>

<Directory /srv/site1/www> # 아래 정의된 DocumentRoot에 엑세스 가능

    Require all granted # 디렉토리를 따로 생성할 것
    AllowOverride None
</Directory>

 

✅ 가상 호스트 실습

[root@server ~]# ls /usr/share/doc/httpd-2.4.6/
ABOUT_APACHE        httpd-languages.conf           LICENSE
CHANGES             httpd-manual.conf              NOTICE
httpd-dav.conf      httpd-mpm.conf                 proxy-html.conf
httpd-default.conf  httpd-multilang-errordoc.conf  README
httpd-info.conf     httpd-vhosts.conf              VERSIONING
[root@server ~]# vi /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
[root@server ~]# vim /etc/httpd/conf.d/00-vhost.conf

[root@server ~]# cp /etc/httpd/conf.d/00-vhost.conf /etc/httpd/conf.d/01-vhost.conf
[root@server ~]# ls /etc/httpd/conf.d
00-vhost.conf  fcgid.conf   README    userdir.conf
01-vhost.conf  autoindex.conf  manual.conf  ssl.conf  welcome.conf

[root@server ~]# mkdir /var/www/html[0..1}
[root@server ~]# echo vhost0 test > /var/www/html0/index.html
[root@server ~]# echo vhost1 test > /var/www/html1/index.html
[root@server ~]# cat /var/www/html0/index.html
vhost0 test
[root@server ~]# cat /var/www/html1/index.html
vhost1 test
[root@server ~]# vi /etc/hosts

[root@server ~]# systemctl restart httpd
[root@server ~]# curl vhost0
vhost0 test
[root@server ~]# curl vhost1
vhost1 test
[root@server ~]# curl 192.168.6.100
vhost0 test
[root@server ~]# curl vhost0.test.example.com
vhost0 test
[root@server ~]# curl vhost1.test.example.com
vhost1 test

 

[root@server ~]# mkdir -p /src/www/html2
[root@server ~]# echo "vhost2 test" > /src/www/html2/index.html
[root@server ~]# cd /etc/httpd/conf.d
[root@server conf.d]# cp 00-vhost.conf 02-vhost.conf 
[root@server conf.d]# vi 02-vhost.conf

[root@server conf.d]# vi /etc/hosts

[root@server conf.d]# systemctl restart httpd
[root@server conf.d]# curl vhost2
vhost2 test

 

 

🔗 참고

더보기

https://rma7.tistory.com/73

https://aroundck.tistory.com/5151

https://victorydntmd.tistory.com/category/Cloud?page=2

 

 

 

728x90