본문 바로가기

DevOps/Tomcat

[Tomcat] 톰캣에서 가상 호스트 및 웹 애플리케이션 설정하는 방법 - 컴도리돌이

728x90
728x90


 

톰캣에서 서블릿 컨테이너에 웹 애플리케이션을 배포하고 관리하기 위한 설정은 "호스팅(hosting)"이라고 합니다. 특히, 'server.xml' 파일에서 '<Host>' 엘리먼트를 사용하여 웹 애플리케이션을 호스팅 하고 설정하는 것에 그에 해당합니다. 

 

이러한 호스팅 설정은 다양한 목적으로 사용될 수 있습니다. 특히 여러 개의 도메인이나 서브도메인을 하나의 톰캣 서버에서 운영하고자 할 때, 각각을 별도의 호스트로 설정하여 구분할 수 있습니다. 이때 호스트(host)는 가상 호스트(virtual host)로도 불릴 수 있습니다.

 

일반적으로 사용되는 'server.xml' 설정에서 '<Host>' 엘리먼트는 다음과 같이 생겼습니다.

 

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

 

  • name: 호스트의 이름을 지정합니다. 
  • appBase: 웹 애플리케이션 파일들이 위치하는 디렉터리를 지정합니다.
  • unpackWARs: WAR 파일을 풀어서 배포할지 여부를 결정합니다.
  • autoDeploy: 자동으로 배포를 할지 여부를 결정합니다. 

여러 개의 도메인이나 서브도메인을 하나의 톰캣 서버에서 운영하는 방법은 톰캣의 "가상 호스트" 기능을 활용하는 것입니다. 가상 호스트를 설정하면 하나의 물리적인 톰캣 서버에서 여러 도메인을 처리할 수 있습니다. 

 

<Engine name="Catalina" defaultHost="localhost">
   <Host name="domain.com" appBase="webapps_domain1" unpackWARs="true" autoDeploy="true">
         ...
   </Host>
   
   <Host name="sub.domain2.com" appBase="webapps_domain2" unpackWARs="true" autoDeploy="true">
         ...
   </Host>
</Engine>

 

위의 예시처럼 설정하면 'domain.com' 및 'sub.domain2.com'으로 접속할 때, 각각의 도메인에 해당하는 웹 애플리케이션을 제공할 수 있습니다. 위의 예제에서는 두 개의 가상 호스트를 설정하였지만, 필요에 따라 더 많은 가상 호스트를 추가할 수 있습니다. 


반응형

 

'<Context>' 엘리먼트는 톰캣에서 웹 애플리케이션 컨텍스트를 설정하는 데 사용되는 엘리먼트입니다.  웹 애플리케이션 컨텍스트는 특정 웹 애플리케이션과 관련된 설정을 지정하는 데 사용됩니다. '<Context>' 엘리먼트는 톰캣의 'server.xml' 파일이나 개별 웹 애플리케이션 'context.xml' 파일에 정의될 수 있습니다.

 

  • path: 웹 애플리케이션의 컨텍스트 경로를 지정합니다. 이 경로는 URL에서 애플리케이션에 액세스 하기 위해 사용됩니다.
  • docBase: 웹 애플리케이션의 루트 디렉터리를 지정합니다. 이 디렉터리에는 웹 애플리케이션의 파일과 리소스가 위치합니다.
  • reloadable: 'true'로 설정하면 개발 중에 코드 또는 설정 변경이 있을 때 자동으로 웹 애플리케이션을 다시 로드합니다. 
  • allowLinking: 'true'로 설정하면 서블릿 컨텍스트에서 심볼릭 링크를 허용합니다. 
<Context path="/myapp" docBase="myapp"/>

 

위에 예제 코드를 보면 '/myapp'라는 경로로 접근할 때 'myapp'이라는 웹 애플리케이션을 사용하도록 설정합니다. 'docBase' 속성은 웹 애플리케이션의 루트 디렉터리를 나타냅니다. 

 

<Context path="/myapp" docBase="myapp" reloadable="true" />

 

'reloadable="true"'를 추가하면 코드 또는 설정이 변경될 때 톰캣이 자동으로 웹 애플리케이션을 다시 로드합니다.

 

<Context path="/myapp" docBase="myapp" allowLinking="true" />

 

'allowLinking="true"'를 추가하면 서블릿 컨텍스트에서 심볼릭 링크를 허용합니다. 이 속성을 사용하면 특정 웹 애플리케이션에서 서블릿 컨텍스트 외부의 리소스를 참조할 수 있는지 여부를 제어할 수 있습니다.

 

위의 예시에서는 '/myapp' 경로의 웹 애플리케이션에 대해 'allowLinking'을 활성화하고 있습니다. 이제 해당 웹 애플리케이션은 서블릿 컨텍스트 외부의 디렉터리에 있는 심볼릭 링크를 통해 리소스에 접근할 수 있게 됩니다. 

 

<Context path="/myapp" docBase="myapp">
    <Alias>/myapp</Alias>
    <Alias>/myapplication</Alias>
    <Alias>/myTest</Alias>
</Context>

 

'<Alias>' 엘리먼트를 사용하여 다른 경로로도 웹 애플리케이션에 액세스 할 수 있습니다. '<Alias>'를 사용하면 다양한 경로로 접근 가능하게 됩니다. 특정 웹 애플리케이션을 여러 경로에서 액세스 할 수 있도록 하기 위해 '<Alias>'를 사용할 수 있습니다. 이는 사용자가 다양한 경로를 통해 동일한 애플리케이션에 액세스 할 수 있도록 합니다. 

 

위의 예시에서는 로컬 호스트로 해당 경로를 접근한다고 가정하면 다음과 같은 경로들이 동일한 myapp에 접근할 수 있게 됩니다.

  • http://localhost:8080/myapp
  • http://localhost:8080/myapplication
  • http://localhost:8080/myTest

 

Apache Tomcat 10 Configuration Reference (10.1.18) - The Host Container

In many server environments, Network Administrators have configured more than one network name (in the Domain Name Service (DNS) server), that resolve to the IP address of the same server. Normally, each such network name would be configured as a separate

tomcat.apache.org

 

Apache Tomcat 10 Configuration Reference (10.1.18) - The Context Container

When autoDeploy or deployOnStartup operations are performed by a Host, the name and context path of the web application are derived from the name(s) of the file(s) that define(s) the web application. Consequently, the context path may not be defined in a M

tomcat.apache.org

728x90
728x90