#tomcat

[Tomcat] 주요 설정 파일(server.xml, web.xml) 완벽 분석 및 필수 튜닝 포인트

Apache Tomcat의 동작을 제어하는 핵심 설정 파일들은 모두 /conf 디렉토리에 위치합니다. 가장 중요한 server.xml(포트, 커넥터)과 web.xml(세션, MIME)의 역할과 자주 사용하는 설정 변경 가이드를 정리합니다.

1. 설정 파일 개요 (Configuration Overview)

Tomcat 설치 경로 내 conf 디렉토리에는 다음과 같은 주요 XML 파일들이 존재합니다.

파일명 주요 역할 및 설명
server.xml Tomcat의 메인 설정 파일입니다.
- HTTP/AJP 포트 설정
- 가상 호스트(Host) 및 Context 설정
- 쓰레드 풀(Thread Pool) 관리
web.xml 모든 웹 애플리케이션의 기본 속성을 정의합니다.
- 세션 타임아웃(Session Timeout) 설정
- MIME 타입 정의, 기본 서블릿 매핑
context.xml 웹 애플리케이션의 Context 설정을 담당합니다.
- JNDI 리소스(DB Connection Pool) 설정 시 주로 사용
tomcat-users.xml Tomcat Manager/Admin 페이지 접근 계정을 관리합니다.

2. server.xml 주요 설정 가이드

엔지니어가 가장 빈번하게 수정하는 파일입니다. 포트 충돌 해결이나 인코딩 처리를 위해 필수적으로 확인해야 합니다.

1) HTTP 포트 변경 및 인코딩 설정

기본 8080 포트를 80으로 변경하거나, 한글 깨짐 방지를 위해 URIEncoding을 설정합니다.

<!-- 기본 설정 -->
<Connector port="8080" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443" />

<!-- 튜닝 설정 예시 -->
<Connector port="80" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443"
           URIEncoding="UTF-8" />
Tip: GET 방식으로 넘어오는 파라미터의 한글이 깨진다면 URIEncoding="UTF-8" 속성이 누락되었을 가능성이 큽니다.

2) AJP 포트 설정 (웹 서버 연동 시)

Apache HTTP Server와 연동할 때 사용하는 AJP 프로토콜 포트입니다. 사용하지 않는다면 주석 처리하여 보안을 강화하는 것이 좋습니다.

<!-- 기본값 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

3. web.xml 주요 설정 가이드

모든 애플리케이션에 적용되는 전역(Global) 설정을 담당합니다.

1) 세션 타임아웃 (Session Timeout)

사용자 세션 만료 시간을 설정합니다. (단위: 분)

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

2) 디렉토리 리스팅 비활성화 (보안)

특정 디렉토리 접근 시 파일 목록이 노출되는 것을 방지하기 위해 listings 값을 false로 설정해야 합니다.

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value> <!-- true면 파일 목록 노출됨 -->
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

4. tomcat-users.xml (Manager App)

http://localhost:8080/manager 페이지에 접속하여 GUI로 애플리케이션을 배포하거나 중지하려면 계정 설정이 필요합니다.

<tomcat-users>
  <!-- 역할 정의 -->
  <role rolename="manager-gui"/>
  <role rolename="admin-gui"/>
  
  <!-- 사용자 정의 -->
  <user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>
주의: Manager App은 강력한 권한을 가지므로, 운영 환경에서는 외부 IP 접근을 차단하거나 해당 기능을 비활성화하는 것을 권장합니다.

Next Step:
설정 파일 수정 후에는 반드시 Tomcat을 재기동해야 적용됩니다. 다음 단계에서는 실제 운영 환경에서 성능을 최적화하기 위한 JVM 메모리 설정(Heap Size)과 GC 튜닝 방법에 대해 알아보겠습니다.