[Linux] 아파치 Tomcat Server.xml 설정

아파치 Tomcat Server.xml 설정

1. 아파치 톰캣 아키텍쳐

1554099115321

2. Server.xml 설명

  • [Server]

    • 최상위 컴포넌트로서, 톰캣의 인스턴스와 동일하다.
    • 1개 이상의 Service 를 포함한다.
    • 기본으로 8005 포트가 설정되어이 있다. 여러개의 톰캣 인스턴스를 사용할 경우, 포트번호 설정을 다르게 하여야 한다.
    속성 설명
    shutdown 톰캣을 셧다운할 때, 사용할 텍스트를 설정한다.

    기본으로 “SHUTDOWN”이 설정되어 있는데 TCP 소켓으로 SHUTDOWN 텍스트를 날리면 톰캣 서버가 종료된다. (링크참조)

    따라서, 보안강화를 위해 shutdown의 텍스트를 임의로 변경하거나, 포트 설정을 port=”-1″로 셋팅하고 자체적으로 kill 명령을 통해 종료처리를 할 수 있다. |

  • [Listener]

    • Server의 하위 컴포넌트

    • 특정 이벤들을 리스닝하고 이벤트 발생시 응답한다.

  • [GlobalNamingResources]

    • Server의 하위 컴포넌트
    • Resource등을 통해서 전역 리소스를 설정한다. (JNDI 등…)
  • [Service]

    • Server의 하위 컴포넌트

    • 1개 이상의 Connector와 Engine을 포함한다.

    • 기본으로 설정된 이름은 Catalina이다. 여담으로 Catailna 이름의 유래는 톰캣 서블릿 컨텐이너를 고안한 Craig McClanahandl 좋아한 섬(Catalina Island) 이름이였다고 한다.

  • [Connector]

    • 톰캣은 기본적으로 HTTP(8080), HTTPS(8443), AJP(8009) 커넥터를 제공한다.
    속성 설명
    port 포트번호
    protocol 프로토콜(HTTP1.1, AJP/2.3등)
    acceptCount Request 큐의 길이를 설정한다. 계속 대기 큐에 쌓이도록 하는 것보다 0-10내외로 값을 낮게 주어 처리하도록 한다.
    redirectPort SSL 요청이 들어올 경우 리다이렉트될 포트번호
    URIEncoding GET 요청을 처리할 때 사용할 인코딩 방식을 설정한다. 톰캣은 기본적으로 ISO-8859-1인데, 한글 사용을 위해 UTF-8로 변경을 해주도록 한다.
    useBodyEncodingForURI true/false로 설정한다. 이 값은 request.setCharacterEncoding()으로 설정한 값으로 인코딩을 처리한다. 스프링 프레임워크를 사용할 경우 web.xml에서 CharacterEncodingFilter로 선언해주는 값으로 인코딩을 하게 된다
    maxParameterCount GET 또는 POST로 전달할 수 있는 파라미터 갯수
    기본값은 10000개
    0으로 설정하게 되면 갯수에 제한을 두지 않는다.
    maxPostSize POST로 전달할 수 있는 bytes 사이즈
    기본값은 2Mbytes(2097152)
    0이하의 숫자로 설정하게 되면 bytes 사이즈에 제한을 두지 않는다
    connectionTimeout 타임아웃 밀리세컨드
    기본값은 60000(60초)이며 -1일 경우 타임아웃의 제한이 없다
    connectionUploadTimeout 데이터 업로드에 대한 타입아웃 밀리세컨드
    이 설정은 disableUploadTimeout이 false일 경우에 효과가 있다
    maxThreads Connector에서 처리할 수 있는 동시 요청 쓰레드 갯수
    기본값은 200개
    아파치와 연동할 경우 MaxClients 값과 관계가 있다. 아파치 MaxClients가 톰캣의 maxThreads보다 많을 경우 hang이 걸릴수가 있다.
    ※ maxThreads X 로드밸런싱 갯수 = MaxClients * 1.1 (또는 1.2)
    아파치 prefork 방식 기준이다.
    ※ http://knight76.tistory.com/entry/Apache-http-서버와-tomcat-서버간의-연결-유의사항 참고
    minSpareThreads 최소로 유지할 쓰레드 갯수
    기본값은 10
    maxSpareThreads idle 상태로 유지할 최대 쓰레드 갯수
    톰캣6 이후로 없어진 속성값. 톰캣 5.5까지 지원한다.
  • [Engine]

    • 커넥터로 수신한 클라이언트의 요청을 처리하고 응답한다.

    • 기본으로 설정된 이름은 Catalina이다.

  • [Host]

    • VirtualHost를 의미하며, name 속성으로 설정된 호스트명으로 웹 애플리케이션을 제공한다.
    • 기본으로 설정된 이름은 localhost이다.
    • 하나의 톰캣 인스턴스에 여러개의 Host도 사용가능하나, 보통 톰캣 인스턴스당 1개의 Host 설정을 추천한다.
      속성 설명
      appBase 웹 애플리케이션이 존재하는 경로, CATALINA_BASE의 webapps를 기본으로 한다.
      unpackWARs 기동시 war 파일을 압축해제한다.
      autoDeploy class 파일, JSP, XML 등이 갱신되었을 때 자동으로 배포한다.
  • [Context]

    • 웹 애플리케이션을 의미한다.

    • Context 설정이 Host안에 없을 경우 기본적으로 webapps 하위의 ROOT 디렉토리를 기본경로로 설정한다.

    • 컨텍스트 설정은 CATALINA_BASE 하위의 conf 디렉토리에서도 설정할 수 있다.

    예제) %CATALINA_BASE%\conf[엔진명][호스트명] 하위에 설정파일 추가.

    • %CATALINA_BASE%\conf\Catalina\localhost\host-manager.xml

    • %CATALINA_BASE%\conf\Catalina\localhost\manager.xml

  • [Valve]

    • 요청을 처리하는 파이프라인 사이에 추가되어 특별한 처리를 수행하는 컴포넌트다.
    • Valve는 Catalina 컨테이너(Context, Host 또는 Engine)에 추가되어, 요청과 응답 사이에 사전처리를 가능하게 한다. Context에 추가되면 해당 웹 애플리케이션에 Valve가 적용, Host에 추가되면 모든 웹 애플리케이션에 Valve가 적용된다.
    • Servlet Filter와 비슷한 기능이나, Servlet은 EE 스펙, Valve는 톰캣 스펙이다.

※참고자료

  • 리눅스를 활용한 회사 인프라 구축의 모든 것
  • http://i5on9i.blogspot.kr/2014/07/tomcat-valve-servlet-filter.html
  • https://tomcat.apache.org/tomcat-7.0-doc/config/valve.html
  • http://bcho.tistory.com/788

출처: https://pshcode.tistory.com/109 [박성훈의 웹개발]

워니즈 블로그
워니즈 깃헙

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다