본문 바로가기

Linux Server 구축/1-2. Web Server

Apache WebServer - Virtual Host - Name-based


Virtual Host 참고사항 : http://bban2.tistory.com/134

-----------------------------------------------------------------------------------------------------

Virtual Host

<VirtualHost *:80> - 가상 호스트를 지정한다. IP를 입력한다.
    ServerAdmin webmaster@dummy-host.example.com - 관리자의 메일주소를 입력한다.
    DocumentRoot /www/docs/dummy-host.example.com - 웹문서 지정 디렉토리
    ServerName dummy-host.example.com - 호스트 네임 지정
    ErrorLog logs/dummy-host.example.com-error_log - 에러 로그파일 지정
    CustomLog logs/dummy-host.example.com-access_log common - 일반 로그파일 지정
</VirtualHost>

가상 도메인을 설정하는 부분으로 하나의 아이피로 여러개의 도메인을 사용할 경우 설정한다.

-----------------------------------------------------------------------------------------------------

1-1. Name-based Virtual Host 설정

[root@localhost conf]# pwd
/etc/httpd/conf
[root@localhost conf]# vi httpd.conf

 989 #NameVirtualHost *:80
 990 NameVirtualHost 192.168.0.7:80 - 하나의 IP로 여러개의 도메인을 사용할 경우에 설정한다.

 999 # VirtualHost example:
1000 # Almost any Apache directive may go into a VirtualHost container.
1001 # The first VirtualHost section is used for requests without a known
1002 # server name.
1003 #
1004 #<VirtualHost *:80>
1005 #    ServerAdmin webmaster@dummy-host.example.com
1006 #    DocumentRoot /www/docs/dummy-host.example.com
1007 #    ServerName dummy-host.example.com
1008 #    ErrorLog logs/dummy-host.example.com-error_log
1009 #    CustomLog logs/dummy-host.example.com-access_log common
1010 #</VirtualHost>
1011
1012 <VirtualHost 192.168.0.7:80> - 여러개의 도메인을 쓰기 때문에 충돌이 일어날수 있다. 이를 방지하기 위해 기존 설정값을 입력해준다.
1013     ServerAdmin root@bban2.co.kr
1014     DocumentRoot /var/www/html
1015     ServerName www.bban2.co.kr
1016 #    ErrorLog logs/dummy-host.example.com-error_log
1017 #    CustomLog logs/dummy-host.example.com-access_log common
1018 </VirtualHost>
1019
1020 <VirtualHost 192.168.0.7:80> - 가상 호스트인 www1.bban2.co.kr에 대한 설정
1021     ServerAdmin root@bban2.co.kr
1022     DocumentRoot /www1
1023     ServerName www1.bban2.co.kr
1024 #    ErrorLog logs/dummy-host.example.com-error_log
1025 #    CustomLog logs/dummy-host.example.com-access_log common
1026 </VirtualHost>
1027
1028 <VirtualHost 192.168.0.7:80> - test1 사용자에게 test1.bban2.co.kr의 가상 도메인을 설정
1029     ServerAdmin test1@bban2.co.kr
1030     DocumentRoot /home/test1/public_html
1031     ServerName test1.bban2.co.kr
1032 #    ErrorLog logs/dummy-host.example.com-error_log
1033 #    CustomLog logs/dummy-host.example.com-access_log common
1034 </VirtualHost>

-----------------------------------------------------------------------------------------------------

1-2. Forward Zone 파일 설정

[root@localhost named]# pwd
/var/named/chroot/var/named
[root@localhost named]# vi dns.for - forward zone 파일을 수정한다.
$TTL    86400
@               IN SOA  bban2.co.kr. root.bban2.co.kr. (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
                IN NS           bban2.co.kr.
                IN A            192.168.0.7
www             IN A            192.168.0.7

www1            IN A            192.168.0.7  - www1.bban2.co.kr에 대한 설정
test1           IN A            192.168.0.7   - test1.bban2.co.kr에 대한 설정


DNS Server 서비스 재시작

[root@localhost named]# service named restart
named를 정지 중:                                           [  OK  ]
named를 시작 중:                                           [  OK  ]

-----------------------------------------------------------------------------------------------------

1-3. /www1 폴더 생성

[root@localhost conf]# service httpd restart
httpd 를 정지 중:                                             [  OK  ]
httpd (을)를 시작 중: Warning: DocumentRoot [/www1] does not exist         [  OK  ]

- 서비스 재시작을 하면 /www1 폴더에 대해서 경고가 뜬다.
Apache 환경설정에서 DocumentRoot /www1 라고 웹문서의 디렉토리를 지정했는데 폴더를 생성하지 않아 경고가 뜨게 된 것이다.

1020 <VirtualHost 192.168.0.7:80> - 가상 호스트인 www1.bban2.co.kr에 대한 설정
1021     ServerAdmin root@bban2.co.kr
1022     DocumentRoot /www1
1023     ServerName www1.bban2.co.kr
1024 #    ErrorLog logs/dummy-host.example.com-error_log
1025 #    CustomLog logs/dummy-host.example.com-access_log common
1026 </VirtualHost>


/www1 폴더 생성

[root@localhost ~] cd / 
[root@localhost /]# mkdir /www1
[root@localhost /]# cd www1
[root@localhost www1]# vi index.html
[root@localhost www1]# cat index.html
Hello!!
Here's www1.bban2.co.kr
Nice to meet you!!

-----------------------------------------------------------------------------------------------------

1-4. 서비스 재시작

[root@server3 conf]# service httpd restart
httpd 를 정지 중:                                          [  OK  ]
httpd (을)를 시작 중:                                      [  OK  ]

-----------------------------------------------------------------------------------------------------

1-5. 웹브라우저에서 test1 홈페이지 확인



www1.bban2.co.kr


test1.bban2.co.kr

-----------------------------------------------------------------------------------------------------

1-6. Apache 관련 명령어

[root@localhost www1]# httpd -t - httpd.conf 파일 설정을 점검한다.
Syntax OK
[root@localhost www1]# httpd -S - 가상 호스트 설정을 보여준다.
VirtualHost configuration:
192.168.0.7:80         is a NameVirtualHost
         default server www.bban2.co.kr (/etc/httpd/conf/httpd.conf:1012)
         port 80 namevhost www.bban2.co.kr (/etc/httpd/conf/httpd.conf:1012)
         port 80 namevhost www1.bban2.co.kr (/etc/httpd/conf/httpd.conf:1020)
         port 80 namevhost test1.bban2.co.kr (/etc/httpd/conf/httpd.conf:1028)
wildcard NameVirtualHosts and _default_ servers:
_default_:443          www.bban2.co.kr (/etc/httpd/conf.d/ssl.conf:81)
Syntax OK
[root@localhost www1]# httpd -l - 현재 컴파일된 모듈의 정보를 출력한다.
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c