서버에 여러 웹사이트를 호스팅하기 위한 주요 전략은 세 가지로 나뉩니다:
- 고유 IP 주소 기반 구성
- 도메인 이름 기반 설정
- 포트 번호 차이 활용
(1) IP 주소 분리 방식
CentOS7 환경에서 192.168.5.102와 192.168.5.104 두 개의 IP를 사용하는 예시입니다.
[root@server conf.d]# cd /etc/httpd/conf.d/
[root@server conf.d]# nano multi_site_config.conf
<VirtualHost 192.168.5.102:9988>
ServerAdmin admin@example.com
DocumentRoot /data/www/main_site
ServerName main.example.com
ErrorLog /var/log/httpd/main_error.log
CustomLog /var/log/httpd/main_access.log combined
</VirtualHost>
<VirtualHost 192.168.5.104:9988>
ServerAdmin admin@example.com
DocumentRoot /data/www/sub_site
ServerName sub.example.com
ErrorLog /var/log/httpd/sub_error.log
CustomLog /var/log/httpd/sub_access.log combined
</VirtualHost>
[root@server conf.d]# systemctl restart httpd
(2) 도메인 기반 설정
DNS 서버가 없는 경우 hosts 파일을 수정해야 합니다.
[root@server conf.d]# nano multi_site_config.conf
<VirtualHost *:9988>
ServerAdmin admin@example.com
DocumentRoot /data/www/main_site
ServerName main.example.com
ErrorLog /var/log/httpd/main_error.log
CustomLog /var/log/httpd/main_access.log combined
</VirtualHost>
<VirtualHost *:9988>
ServerAdmin admin@example.com
DocumentRoot /data/www/sub_site
ServerName sub.example.com
ErrorLog /var/log/httpd/sub_error.log
CustomLog /var/log/httpd/sub_access.log combined
</VirtualHost>
[root@server conf.d]# systemctl restart httpd
hosts 파일 수정 예시:
127.0.0.1 localhost
192.168.5.102 main.example.com
192.168.5.102 sub.example.com
(3) 포트 분리 방식
추가 포트를 설정하고 각각의 가상 호스트를 지정합니다.
[root@server conf]# nano https.conf
Listen 9988
Listen 9989
[root@server conf.d]# nano multi_site_config.conf
<VirtualHost *:9988>
ServerAdmin admin@example.com
DocumentRoot /data/www/main_site
ServerName main.example.com
ErrorLog /var/log/httpd/main_error.log
CustomLog /var/log/httpd/main_access.log combined
</VirtualHost>
<VirtualHost *:9989>
ServerAdmin admin@example.com
DocumentRoot /data/www/sub_site
ServerName sub.example.com
ErrorLog /var/log/httpd/sub_error.log
CustomLog /var/log/httpd/sub_access.log combined
</VirtualHost>
[root@server conf.d]# systemctl restart httpd