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 "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
'Back End > 백엔드 (Back-End) 서버 (server)' 카테고리의 다른 글
윈도우 환경에서 여러 개의 톰캣 설치하는 방법 : 톰캣 두개, 서비스 이름, 포트 변경, 서비스 관리 (4) | 2024.02.28 |
---|---|
VirtualBox NAT 네트워크 설정하고 포트포워딩 하기 : 가이드 (Putty연결) (0) | 2024.02.27 |
Spring Boot 프로젝트 개발과 WAR vs JAR 배포에 대한 고찰 (0) | 2024.02.26 |
서버 구성 전략: 백엔드 및 데이터베이스 운영 방식 비교와 장단점 (0) | 2024.02.21 |
Session(세션), Cookie(쿠키), Token(토큰), Cache(캐쉬) 란, 역할과 관계로 이해해보기 (0) | 2023.07.03 |