이름기반 VirtualHost 설정
하나의 서버가 여러개의 도메인을 가지고 있고, 각각의 도메인마다 다른 서비스를 하고 싶을 때 아파치의 VirtualHost를 사용하면 하나의 서버로 각기 다른 도메인을 서비스할 수 있다.
만약의 서버의 아이피가 192.168.0.5이고, 쇼핑몰 사이트와 책구매 사이트를 운영하고 싶다고 생각해보자.
우리는 두 개의 사이트를 운영해야하기 때문에 도메인을 2개 구입했다. (shopping.com, book.com) 이렇게되면 두개의 도메인은 둘다 192.168.0.5서버를 바라보게 된다.
하지만 우리는 shopping.com 으로 접속했을 때는 쇼핑몰 사이트를, book.com에 접속했을 때는 책 구매 사이트를 보여주고 싶다.
이럴 때 가상호스트(VirtualHost)를 사용하면 원하는대로 서비스를 제공할 수 있다.(Tomcat에서도 존재)
일단, Apache설정파일인 httpd.conf에서 VirtualHost 설정의 주석을 제거한다.
httpd.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
conf/extra/httpd-vhosts.conf 파일은 include하겠다 정도로 생각하면 될 거 같다. (httpd.conf에 바로 추가해도 동작하긴함)
그 후 httpd-vhosts.conf의 설정을 추가해보자.
httpd-vhosts.conf
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "/home/corn/deploy/book/doc_base"
ServerName book.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/home/corn/deploy/shopping/doc_base"
ServerName shopping.com
</VirtualHost>
- NamedVirtualHost : 가상호스팅을 할 IP영역을 지정
- VirtualHost : 세부적인 설정 명시
NamedVirtualHost *:80 => 80포트로 들어오는 모든 IP주소에 대해 가상호스트 요청을 제공하겠다.
VirtualHost 설정
- ServerName : 서비스할 도메인
- DocumentRoot : 실제 소스파일이 있는 루트를 지정
이렇게 설정 후 shopping.com으로 request를 날릴 경우, /home/corn/deploy/shopping/doc_base 안에 있는 파일을 찾아가게 된다.
하지만 이 설정 이후에 한 가지 더 설정을 해야하는데 바로 접근권한에 대한 설정이다.
위의 설정 후에 아파치를 재시작하고 shopping.com에 접속하게되면 403 Forbidden 에러를 볼 수 있다.
shopping.com의 DocumentRoot인 /home/corn/deploy/shopping/doc_base 에 접근할 수 없다는 뜻인데, httpd.conf 파일의 <Directory> 태그에 설정을 해줘야 한다.
httpd.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow // deny -> allow 순서
Deny from all // 모든 접속을 deny
</Directory>
httpd.conf 의 <Directory>설정을 보면 위와 같이 되어 있는 것을 볼 수 있다.
Order는 허용정책에 대한 순서로, Deny를 수행하고 Allow를 수행하게 되어 있는데, 아래줄에 모든 접속을 deny한다고 설정이 되어 있기 때문에 모든 접근이 거부된 것이다. (Directory 태그의 파라미터(/)는 전체 폴더를 뜻함)
Directory태그 아래에 우리가 접근해야할 Directory 설정을 추가해주자
<Directory "/home/corn/deploy/book/doc_base">
Order Allow,Deny
Allow from all
</Directory>
<Directory "/home/corn/deploy/shopping/doc_base">
Order Allow,Deny
Allow from all
</Directory>
이렇게하면, 우리가 설정한 DocumentRoot에 접근할 수 있게 된다.
'프로그래밍 노트 > 인프라' 카테고리의 다른 글
Apache2.4 httpd.conf 설정파일 완전 분석 (0) | 2019.11.03 |
---|---|
Apache 2.4 접근제어(Access Control) (0) | 2019.11.03 |
톰캣(Tomcat) server.xml 설정 (0) | 2019.10.09 |
리눅스(Linux) yum..? (0) | 2019.08.18 |
[CentOS] 젠킨스(Jenkins)설치하기 (0) | 2019.08.18 |