[Apache Multi Domain] 아파치 멀티 도메인 : 이름기반 VirtualHost 설정

이름기반 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> 태그에 설정을 해줘야 한다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

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에 접근할 수 있게 된다.

[출처] https://blog.cornsworld.co.kr/348

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
1111 [ 一日30分 인생승리의 학습법] KoELECTRA로 기계독해(MRC) API 개발 file 졸리운_곰 2023.01.01 7
1110 [ 一日30分 인생승리의 학습법] 일 안 해도 생기는 수입? 그런 ‘패시브 인컴’은 없다 file 졸리운_곰 2023.01.01 6
1109 [ 一日30分 인생승리의 학습법] Qemu를 이용한 가상화 기초 file 졸리운_곰 2022.12.31 5
1108 [ 一日30分 인생승리의 학습법] 파이토치로 딥러닝해야 하는 5가지 이유 졸리운_곰 2022.12.31 6
1107 [ 一日30分 인생승리의 학습법] 왜 ‘한국어’의 자연어처리(NLP)는 유독 어려울까? file 졸리운_곰 2022.12.31 10
1106 [ 一日30分 인생승리의 학습법] MinIO Windows Service 등록 졸리운_곰 2022.12.24 7
1105 [ 一日30分 인생승리의 학습법] Apache 2.2에서 2.4로 마이그레이션 시 발생하는 에러 및 해결책 정리 졸리운_곰 2022.12.18 6
1104 [ 一日30分 인생승리의 학습법] Git 사용 방법 정리(commit, push, pull request, merge 등) 졸리운_곰 2022.12.04 18
1103 [ 一日30分 인생승리의 학습법] [웹 기획] 화면 설계 용어 - 와이어프레임, 스토리보드, 프로토타입의 차이점 file 졸리운_곰 2022.12.03 6
1102 [ 一日30分 인생승리의 학습법] REST API 설계 (네이밍) 졸리운_곰 2022.11.26 22
1101 [ 一日30分 인생승리의 학습법] REST API URI 규칙 졸리운_곰 2022.11.26 12
1100 [ 一日30分 인생승리의 학습법 ] REST API URL 규칙 졸리운_곰 2022.11.26 9
1099 [ 一日30分 인생승리의 학습법 ] prolog 문법 : Prolog Syntax 졸리운_곰 2022.11.21 3
1098 [ 一日30分 인생승리의 학습법 ] noVNC 작동원리 file 졸리운_곰 2022.11.16 6
1097 [ 一日30分 인생승리의 학습법 ] 프로젝트 만들고 GitHub에 첫 Commit하고 Push하기 file 졸리운_곰 2022.11.15 4
1096 [ 一日30分 인생승리의 학습법 ] 우분투(리눅스) 에서 EBS 라디오 자동녹음 만들기 졸리운_곰 2022.11.11 9
1095 [ 一日30分 인생승리의 학습법 ] EBS FM 라디오, rtmp 서비스 중단 졸리운_곰 2022.11.11 9
1094 [ 一日30分 인생승리의 학습법 ] 악보 읽는 방법 file 졸리운_곰 2022.11.08 12
1093 [ 一日30分 인생승리의 학습법 ] 13가지 주요 오픈소스 프로젝트 file 졸리운_곰 2022.10.09 15
1092 [ 一日30分 인생승리의 학습법 ] 극상의 학습 난이도로 입문자 울리는 프로그래밍 언어 Top 10 졸리운_곰 2022.09.03 15
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED