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 튜닝 방법에 대해 알아보겠습니다.