Tomcat server.xml 설정
4. 응용 변형 예제
4.1 관리용 포트 분리
헬스체크나 관리 API 만 받는 Connector 를 하나 더 추가할 수 있습니다. <Connector port="18080" protocol="HTTP/1.1" address="127.0.0.1" /> 처럼 address 를 로컬로 좁히면 외부에서는 접근할 수 없습니다.
4.2 특정 IP 만 바인딩
여러 네트워크 인터페이스를 가진 서버는 address 속성으로 커넥터가 붙을 IP 를 지정합니다. 사내망 전용 서비스는 외부 인터페이스를 뺀 내부 IP 로만 열어 노출 범위를 줄입니다.
4.3 Executor 로 스레드풀 공유
Connector 여러 개가 스레드를 각자 따로 쓰면 합계가 커집니다. <Executor name="tomcatThreadPool" maxThreads="200" /> 를 만들고 Connector 에 executor="tomcatThreadPool" 을 지정하면 스레드풀을 공유해 총량을 관리하기 쉽습니다.
4.4 Context 는 server.xml 밖으로
server.xml 안에 <Context> 를 직접 넣으면 앱을 다시 배포할 때마다 server.xml 을 건드려야 합니다. 앱 폴더의 META-INF/context.xml 이나 $CATALINA_BASE/conf/[engine]/[host]/앱이름.xml 로 분리하는 편이 안전합니다.
4.5 AccessLogValve pattern 을 JSON 형식으로
로그 수집기가 JSON 을 선호하면 pattern 을 JSON 형태 문자열로 바꿀 수 있습니다. pattern="{"ip":"%h","status":%s,"ms":%D}" 처럼 작성하면 별도 파서 없이 수집기가 바로 읽습니다.