LoGin
article thumbnail
반응형

 

server.xml 파일은 Apache Tomcat의 서버 구성을 정의하고 있습니다.

Tomcat서버의 포트, 커넥터 인증, 로깅 등 다양한 측면을 설정합니다.

 

Server 엘리먼트

 

tomcat 서버의 전체 설정을 포함합니다. 'port' 속성은 Tomcat Server가 사용할 포트를 지정하고, 'shutdown' 속성은 Tomcat서버를 종료하기 위한 특정 문자열을 정의한다.

 

port : Tomcat 서버가 수신 대기할 포트를 지정한다. 기본값은 8005이고, 서버의 종료 명령을 받기 위해 사용된다.

shutdown : Tomcat 서버를 종료하기 위한 특정 문자열을 지정한다. 서버를 종료할 때 사용된다.

 

Listener 엘리먼트들

Tomcat이 시작될 때 특정 이벤트를 수신하고 처리하는 데 사용됩니다. 예를 들어, 'VersionLoggerListener'는 Tomcat의 버전 정보를 로깅하는 데 사용된다

 

className : 리스터 또는 밸브 클래스의 전체 경로를 지정한다.

SSLEngine : APR 라이브러리 로더 리스터에서 사용되며, SSL(보안 소켓 계층) 엔진을 활성화합니다.

 

 

 

 

GlobalNamingResources 엘리먼트

 

전역 JNDI 리소스를 정의한다. 사용자 데이터베이스와 같은 리소스가 포함될 수 있다.

 

auth : 리소스의 인증 방법을 지정한다. "Container"로 설정된 경우, 컨테이너의 인증 메커니즘을 따른다.

type : 리소스의 유형을 지정한다. 일반적으로 Java 클래스의 전체 경로이다.

description : 리소스에 대한 설명을 제공한다. 이는 주석이나 문서화 목적으로 사용할 수 있습니다.

factory : 리소스를 생성하기 위한 팩토리 클래스의 전체 경로를 지정한다.

pathname : 사용자 데이터베이스와 같은 리소스가 로드될 파일의 경로를 지정한다.

 

 

Service 엘리먼트

 

Tomcat 서비스를 정의한다. 서비스는 하나 이상의 커넥터를 포함하며, 이 커넥터들은 클라이언트로부터의 요청을 받고 처리한다.

 

 

 

Connector 엘리먼트들

 

클라이언트와의 통신을 위한 커넥터를 정의한다. HTTP 요청을 처리하는 기본 커넥터와 SSL/TLS를 사용하는 커넥터 등이 포함될 수 있다. 포트, 프로토콜, 연결 시간 초과 등의 속성을 설정할 수 있습니다.

 

 

protocol : 커넥터가 사용할 프로토콜을 지정한다. 주로 HTTP/1.1이나 AJP/1.3가 사용된다.

connectionTimeout : 클라이언트로부터 연결이 유지될 수 있는 최대 시간(밀리초)을 설정한다.

redirectPort : SSL 연결이 필요한 경우 리디렉션될 포트를 지정한다.

maxParameterCount : 요청에 허용되는 최대 매개변수 수를 지정한다.

 

 

 

Engine 엘리먼트

 

Tomcat 서버 내에서 요청을 처리하는 핵심 엔진을 정의한다. 호스트 설정과 클러스터링 설정 등이 포함될 수 있다.

 

 

defaultHost : 엔진이 처리할 기본 호스트를 지정한다.

 

 

 

Realm 엘리먼트

Tomcat 서버 내에서 요청을 처리하는 핵심 엔진을 정의한다. 호스트 설정과 클러스터링 설정 등이 포함될 수 있다.

 

 

 

 

 

Host 엘리먼트

특정 호스트에 대한 설정을 정의한다. 여기에는 웹 애플리케이션의 기본 디렉토리, WAR 파일의 자동 배포 여부 등이 포함될 수 있다.

 

appBase : 호스트에 배포할 웹 애플리케이션의 기본 디렉토리를 지정한다.

unpackWARs : WAR 파일을 배포할 때 압축을 풀 것인지 여부를 결정한다.

autoDeploy : 새로운 웹 애플리케이션이 자동으로 배포되는지 여부를 결정한다.

 

 

 

Valve 엘리먼트들

특정 호스트나 컨텍스트에서 요청을 처리하기 전후에 추가적인 작업을 수행한다.

예를 들어, 접근 로그 기록을 위한 'AccessLogValve'가 포함될 수 있다.

 

prefix : 접근 로그 파일 이름이 접두어를 지정한다.

suffix : 접근 로그 파일 이름의 접미어를 지정한다.

pattern : 접근 로그의 형식을 지정한다. 

 

 %h, %l, %u, %t, %r, %s, %b

 

각각 호스트, 원격 사용자, 사용자 이름, 날짜/시간, 요청, 상태 코드, 응답 바이트를 나타낸다.

 

 

service.xml 파일은 Tomcat 서버의 구성을 세밀하게 조정하고 필요한 기능을 활성화하거나 비활성화하는 데 사용된다.

 

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Apache Software Foundation (ASF)에게 라이선스가 부여되었습니다. 추가적인 저작권 소유에 대한 추가 정보는
  이 작업과 함께 배포된 NOTICE 파일을 참조하십시오.
  이 파일은 Apache License, Version 2.0(이하 "라이선스")에 따라 사용이 허가됩니다.
  라이선스에 따라 사용할 수 없는 경우가 있으며, 이 경우 라이선스에 따라 허용된 경우에만 사용할 수 있습니다.
  라이선스 사본은 http://www.apache.org/licenses/LICENSE-2.0에서 얻을 수 있습니다.
-->

<!-- 
  주의: "서버(Server)"는 "컨테이너(Container)"가 아니므로
  "Valves"와 같은 하위 구성 요소를 정의할 수 없습니다.
  문서: /docs/config/server.html
-->
<Server port="8005" shutdown="SHUTDOWN">
  <!-- Tomcat의 버전을 로깅하는 리스너 -->
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!-- 보안 리스너. 문서: /docs/config/listeners.html -->
  <!--
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  <!-- APR 라이브러리 로더. 문서: /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!-- 특정 java/javax API 사용으로 인한 메모리 누수 방지 -->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <!-- 전역 자원의 MBean 처리 -->
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <!-- 스레드 로컬 누수 방지 -->
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <!-- Global JNDI 자원 -->
  <GlobalNamingResources>
    <!-- 사용자 데이터베이스. 사용자 인증에 사용될 수 있는 편집 가능한 데이터베이스 -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <!-- 서비스(Service): 하나 이상의 커넥터를 공유하는 커넥터 집합 -->
  <Service name="Catalina">
    <!-- 커넥터가 공유할 수 있는 공유 실행자 정의 -->
    <!--
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    -->

    <!-- HTTP/1.1 커넥터 정의 -->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000" />

    <!-- SSL/TLS HTTP/1.1 커넥터 정의 -->
    <!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true"
               maxParameterCount="1000"
               >
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
    -->

    <!-- AJP 1.3 커넥터 정의 -->
    <!--
    <Connector protocol="AJP/1.3"
               address="::1"
               port="8009"
               redirectPort="8443"
               maxParameterCount="1000"
               />
    -->

    <!-- 엔진(Engine): 모든 요청을 처리하는 진입점 -->
    <Engine name="Catalina" defaultHost="localhost">
      <!-- 클러스터링을 위한 렘 -->
      <!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      -->

      <!-- 브루트포스 공격 방지를 위한 LockOutRealm 사용 -->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- 사용자 데이터베이스와 연동 -->
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <!-- 호스트(Host): 웹 애플리케이션을 처리하는 호스트 -->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <!-- 웹 애플리케이션 간 인증 공유를 위한 SingleSignOn valve -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- 접근 로그 기록을 위한 AccessLogValve -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>
728x90
반응형
profile

LoGin

@LoGinShin

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!