본문 바로가기
프로그램 활용/웹서버

Tomcat 서브도메인 호스트 설정(웹서버 가상호스트 추가)

by 3604 2023. 11. 24.
728x90

출처: https://thereclub.tistory.com/11 [강남부자:티스토리]

가상호스트란?

웹서버에 기본적으로 존재하는 Host가 Main Host라고 한다. (www.도메인)

하나의 웹서버에 Main Host외 별도의 디렉터리를 가진 여러개의 Host를 설정해서 사용할 수 있는데

Main Host외의 나머지 Host들을 모두 Virtual Host(가상호스트)라고 한다.

 

 

서브도메인 이란?

호스트 계정 내의 IP주소 및 디렉터리를 향하도록 할 수 있는 도메인 이름의 확장자.

도메인에 보조적인 역할?을 해줄 수 있는 어플리케이션을 같은 도메인 내 가상호스트를 추가해서 여러개 추가 구성할 수 있다.

서브도메인을 사용하면 사이트의 고유한 컨텐츠 영역을 기억하기 쉬운 웹 주소를 쉽게 만들 수 있다.

쉽게 말해서 하나의 Tomcat에 여러 개의 사이트들을 돌릴 수가 있다!

 

 

서브도메인의 필요성?

개인적으로 서브도메인 구성을 하게된 계기는 반응형(CSS미디어쿼리사용한) 웹사이트를 개발 후 보다 좀 더 모바일에

친숙한 페이지를 구성하고 싶었지만 반응형으로 구현했다보니 PC버전의 디자인과 모바일버전의  디자인 모두를 고려하면서 CSS 작성해야했다.

 

고민 중에 아에 타업체들이 하는 것처럼 m.으로시작하는 서브도메인을 구성해서 전용모바일페이지를 구현하면 좋겠다라는 생각으로 시작했다.

 

 

또한 관리자용, 리소스용, API용 등도 추가해나가면 이러한 역할들이 서브도메인에 종속되기 때문에

 

보다 심플한 URI설계와 보안 및 관리 등의 장점들이 너무 많아서 꼭 서브도메인 구성을 고려하는게 좋다.

 

 

웹 서버에 서브도메인 설정/추가하기

Tomcat에서 가상호스트를 추가하는 설정을 통해서 각 서브도메인에 대해 별개의 웹 어플리케이션을 구동할 수 있다.
Tomcat 8.0 환경에서 테스트 했습니다.

 

1. server.xml에 Host요소 추가하기

$CATALINA_HOME 하위에 위치한 conf /server.xml파일을 열어보면 Service Engine 하위에 Host요소가 한개있을 것이다.

여기에 아래와 같이 서브도메인에 연결시킬 호스트를 추가 작성한다.

※ CATALINA_HOME 환경변수는 톰캣의 최상위 폴더를 가르킨다.

...

...

<Service name="Catalina">

<Connector .... >

<Engine ...>

 

...

 

<!-- 기본 호스트 -->

<Host name="test.com" appBase="webapps" unpackWARs="true" autoDeploy="true">

</Host>

 

<!-- 서브도메인에 연결시킬 호스트 추가 설정 -->

<Host name="m.test.com" appBase="m" unpackWARs="true" autoDeploy="true">

</Host>

 

</Engine>

</Service>

...

...

 

- name속성에는 추가할 서브도메인명을 작성한다.

- appBase속성에는 웹어플리케이션이 위치할 디렉터리를 작성한다. (상대경로시 $CATALINA_HOME을 기준으로 디렉터리패스가 잡힌다.)

 

 

2. 추가한 호스트의 컨텍스트 설정을위한 ROOT.xml 작성하기

$CATALINA_HOME/conf/Catalina 하위에 방금 추가한 서브도메인명과 동일한 폴더를 만든 후

하위에 ROOT.xml 파일을추가한다음 아래와 같이 작성 후 저장해준다.

 

<?xml version="1.0" encoding="UTF-8"?>

<Context docBase="www/webapps/m" privileged="true">

</Context>

 

 

이렇게 함으로써 서브도메인 추가 설정을 완료했다.

이제 $CATALINA_HOME 하위에 m디렉터리를 생성 후 하위에 ROOT디렉토리를 추가해주자.

여기서 m.도메인의 어플리케이션을 담고있는 프로젝트 소스를 배포 후 서버를 재구동시키면 된다.

 

※ $CATALINA_HOME/webapps 폴더는 기존 (www.도메인)의 어플리케이션을 담고있다.

 

 

※ 설정된 디렉터리 구조(새롭게 추가한것은 진하게 표기함)

 

$CATALINA_HOME

ㄴ conf

ㄴ Catalina

m.test.com

ROOT.xml 

ㄴ server.xml

ㄴ webapps

ㄴ ROOT

ㄴ www.test.com의 웹어플리케이션소스

m

ROOT

ㄴ m.test.com의 웹어플리케이션소스

 

 

 

 

키워드

- 단일 Tomcat에서 여러 개의 Host 도메인 추가/등록하기

- 서브도메인 설정하기

- 가상호스트 설정하기

- 웹 서버에 가상호스트 추가하기

- m.으로 시작하는 서브도메인 생성하기

- 모바일전용 사이트 만들기

 

 

 

출처: https://granya.tistory.com/42

tomcat 폴더 안에 conf 안에 server.xml 수정

tomcat/webapps 안에 ROOT 와 utest 컨텍스트 두가지 프로젝트 존재하여 접속해야함

기존 컨텍스트를 이용한 접속 방법 

ROOT = 111.111.111.111

utest = 111.111.111.111/utest

 

아래 도메인을 사용한 접속 방법으로 변경해야함

ROOT = a.test.co.kr

utest = b.test.co.kr

 

 

<!-- 원래 존재하는 local Host -->

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

      </Host>

 

<!-- 1번 도메인 추가 Host -->

<!-- a.test.co.kr 접속 가능

      <Host name="a.test.co.kr"  appBase="webapps" unpackWARs="true" autoDeploy="true">

      </Host>

 

<!-- 2번 도메인 추가 Host 및 Context 설정 -->

      <Host name="b.test.co.kr"  appBase="webapps" unpackWARs="true" autoDeploy="true">

          <Context docBase="/software/apache-tomcat-7.0.54-jdk6-80/webapps/utest" path="" reloadable="true" />

      </Host>

 

 

적용후 접속 방법 (ip주소 및 도메인 컨텍스트를 사용한 접속 가능)

ROOT = a.test.co.kr

111.111.111.111

 

utest = b.test.co.kr

b.test.co.kr/utest

a.test.co.kr/utest

111.111.111.111/utest

 

 

utest를 b.test.co.kr로 접속시 컨텍스트 명을 사용하는 방법으로 인해 sendRedirect를 이용하여 b.text.co.kr/utest로 변경함

 

출처: https://granya.tistory.com/42 [그라냐's blog:티스토리]

 

728x90