2023. 6. 6. 19:58ㆍSpring Framework/Apache Tomcat Server
Apache Tomcat의 Host는 톰캣 서버 내에서 가상 호스트(Virtual Host)를 나타내는 구성 요소로, 하나의 Engine 내에서 여러 개의 Host를 정의할 수 있습니다. Host는 주로 하나의 도메인 또는 서브도메인에 대응하며, 해당 도메인에 대한 웹 애플리케이션을 관리하고, 클라이언트의 요청을 적절한 Context(웹 애플리케이션)로 라우팅하는 역할을 합니다.
톰캣의 Host는 웹 서버에서의 가상 호스팅(Virtual Hosting) 기능과 유사합니다. 여러 도메인을 한 대의 서버에서 운영할 때 각 도메인에 대해 별도의 애플리케이션을 제공할 수 있도록 도와줍니다.
1. Host의 주요 역할
Host는 톰캣 서버의 Engine 내에서 특정 도메인 이름에 대해 웹 애플리케이션을 실행하고 관리하는 역할을 합니다. 클라이언트가 특정 도메인(예: www.example.com
)으로 요청을 보내면, Host는 해당 도메인에 매핑된 웹 애플리케이션을 실행하게 됩니다.
- 도메인 처리: 각 Host는 하나의 도메인 또는 서브도메인에 대해 요청을 처리할 수 있습니다. 하나의 톰캣 서버는 여러 도메인에 대해 여러 Host를 가질 수 있습니다.
- Context 관리: Host는 하나 이상의 Context(웹 애플리케이션)를 포함할 수 있으며, 이를 통해 도메인 내에서 여러 애플리케이션을 실행할 수 있습니다. 각 Context는 특정 URL 경로에 매핑되며, 해당 경로로 들어오는 요청을 처리합니다.
- 애플리케이션 배포: Host는 웹 애플리케이션을 배포할 위치를 지정하고, 배포된 애플리케이션의 생명 주기를 관리합니다.
2. Host의 구조
Host는 톰캣 서버 내에서 각 도메인에 대한 웹 애플리케이션을 관리하기 위한 여러 가지 속성과 설정을 포함합니다. Host는 주로 톰캣의 server.xml
파일에서 설정되며, 여러 속성을 통해 각 도메인에 맞는 설정을 제공합니다.
2.1 name
- name 속성은 Host가 처리할 도메인 이름을 지정합니다. 예를 들어,
www.example.com
과 같은 도메인 이름을 Host의 name 속성에 지정하면, 톰캣은 해당 도메인으로 들어오는 요청을 이 Host가 처리하도록 합니다.
<Host name="www.example.com" appBase="webapps/example" unpackWARs="true" autoDeploy="true">
</Host>
2.2 appBase
- appBase 속성은 이 Host에 배포된 웹 애플리케이션이 위치할 디렉토리를 지정합니다. 기본적으로 톰캣은
webapps
디렉토리를 사용하지만, 각 Host마다 다른 경로를 지정할 수 있습니다. - appBase 경로는 절대 경로나 상대 경로로 지정할 수 있으며, 상대 경로는 톰캣의 설치 디렉토리에서 상대적인 위치를 기준으로 설정됩니다.
<Host name="www.example.com" appBase="webapps/example" unpackWARs="true" autoDeploy="true">
</Host>
2.3 unpackWARs
- unpackWARs 속성은 WAR 파일이 배포될 때 이를 자동으로 압축 해제할지 여부를 지정합니다.
true
로 설정하면 WAR 파일이 압축 해제되어 디렉토리 형태로 배포되고 실행됩니다.
<Host name="www.example.com" appBase="webapps/example" unpackWARs="true">
</Host>
2.4 autoDeploy
- autoDeploy 속성은 Host가 실행 중일 때 새로운 웹 애플리케이션이 배포되거나 업데이트될 경우, 이를 자동으로 감지하고 배포할지 여부를 지정합니다.
true
로 설정하면, 톰캣이 실행 중일 때도 새로운 애플리케이션을 자동으로 배포할 수 있습니다.
<Host name="www.example.com" appBase="webapps/example" autoDeploy="true">
</Host>
2.5 deployOnStartup
- deployOnStartup 속성은 톰캣이 시작될 때 이 Host에 있는 모든 애플리케이션을 자동으로 배포할지 여부를 결정합니다. 이 속성을
true
로 설정하면, 톰캣이 시작할 때 appBase 디렉토리에 있는 모든 애플리케이션을 자동으로 배포합니다.
<Host name="www.example.com" appBase="webapps/example" deployOnStartup="true">
</Host>
2.6 Context
- Context는 Host 내에서 각 웹 애플리케이션을 정의하는 요소로, 여러 Context가 하나의 Host 내에서 존재할 수 있습니다. 각 Context는 웹 애플리케이션의 특정 경로에 매핑되며, 이를 통해 도메인 내에서 여러 애플리케이션을 실행할 수 있습니다.
- 예를 들어, 다음과 같이 Host 내에서 여러 Context를 설정할 수 있습니다:
<Host name="www.example.com" appBase="webapps/example">
<Context path="/" docBase="ROOT" reloadable="true"/>
<Context path="/app1" docBase="app1" reloadable="true"/>
</Host>
- path: 각 Context의 경로를 지정합니다. 루트 애플리케이션의 경우 경로는
/
로 지정됩니다. - docBase: 웹 애플리케이션의 실제 위치를 지정합니다.
- reloadable:
true
로 설정되면, 클래스 파일이 변경될 때 애플리케이션이 자동으로 다시 로드됩니다.
2.7 Alias
- Alias는 하나의 Host에 여러 도메인 이름을 매핑할 수 있게 해주는 설정입니다. 이를 통해 여러 도메인이나 서브도메인을 동일한 Host가 처리할 수 있습니다.
<Host name="www.example.com" appBase="webapps/example" unpackWARs="true" autoDeploy="true">
<Alias>example.com</Alias>
<Alias>www.alias-example.com</Alias>
</Host>
위 예시에서, www.example.com
, example.com
, www.alias-example.com
모두 같은 Host에서 처리됩니다.
3. Host의 동작 과정
도메인으로 요청 수신: 클라이언트가 특정 도메인(예:
www.example.com
)으로 요청을 보낼 때, 톰캣은 해당 도메인 이름을 기반으로 적절한 Host를 선택합니다.Context로 요청 전달: 톰캣이 Host를 선택한 후, URL 경로에 따라 적절한 Context(웹 애플리케이션)로 요청을 전달합니다. 예를 들어,
http://www.example.com/app1
로 요청이 들어오면, Host 내에서/app1
경로에 매핑된 Context로 요청이 전달됩니다.서블릿 또는 JSP 실행: 선택된 Context 내에서 해당 요청을 처리할 서블릿이나 JSP 파일을 찾아 실행합니다.
응답 반환: 처리된 결과는 클라이언트에게 응답으로 반환됩니다.
4. Host 설정의 예
아래는 톰캣의 server.xml
파일에서 Host 설정의 예시입니다:
<Engine name="Catalina" defaultHost="localhost">
<Host name="www.example.com" appBase="webapps/example" unpackWARs="true" autoDeploy="true">
<Alias>example.com</Alias>
<Alias>alias.example.com</Alias>
<!-- ROOT 애플리케이션 -->
<Context path="/" docBase="ROOT" reloadable="true"/>
<!-- 추가 애플리케이션 -->
<Context path="/app1" docBase="app1" reloadable="true"/>
</Host>
</Engine>
- name:
www.example.com
이라는 도메인에 대응하는 Host를 정의합니다. - appBase: 이 Host에 배포된 애플리케이션이 위치할 디렉토리입니다.
- unpackWARs와 autoDeploy: 새로운 WAR 파일이 자동으로 배포되고 압축 해제됩니다.
- Alias: 여러 도메인 또는 서브도메인에 대해 동일한 Host가 요청을 처리할 수 있도록 합니다.
- Context: 루트 경로
/
와/app1
경로에 대해 각각의 애플리케이션이 배포되어 있습니다.
'Spring Framework > Apache Tomcat Server' 카테고리의 다른 글
Tomcat 서버에서 정적 페이지를 처리하는 방법 (0) | 2023.06.13 |
---|---|
Service (0) | 2023.06.06 |
Context (0) | 2023.06.04 |
Thread Pool (0) | 2023.05.25 |
AJP (Apache JServ Protocol) Connector (0) | 2023.04.28 |