Apache Tomcat server.xml에서 maxPostSize와 maxParameterCount 설정하기
Apache Tomcat을 운영하다 보면 파일 업로드 크기 제한이나 요청 파라미터 개수 제한 때문에 에러가 발생하는 경우가 많아요. 특히 413 Payload Too Large나 Request parameter count exceeded 같은 에러를 자주 만나게 되죠.
이런 문제를 해결하려면 server.xml의 <Connector> 설정에서 maxPostSize와 maxParameterCount 값을 조정하면 됩니다. 오늘은 이 두 속성의 역할, 기본값, 설정 방법, 그리고 보안 주의사항까지 정리해드릴게요!
1. 설정 위치
Tomcat의 설정 파일인 conf/server.xml 안에 있는 <Connector> 태그에 속성을 추가합니다. 보통 HTTP 포트(8080)나 HTTPS 포트(8443)에 해당하는 Connector를 수정해요.
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxPostSize="10485760"
maxParameterCount="1000" />
Tomcat을 재시작하면 적용됩니다.
2. maxPostSize란?
- 역할: application/x-www-form-urlencoded 방식의 POST 요청 본문(주로 form 데이터)을 파싱할 때 허용하는 최대 크기(바이트 단위)를 제한합니다. 파일 업로드(multipart/form-data)는 이 설정의 영향을 받지 않아요. (파일 업로드는 별도로 maxFileSize, maxRequestSize 등을 설정해야 함)
- 기본값: 2,097,152 바이트 (약 2MB)
- -1 또는 0: 제한 없음 (무제한)
- 추천 값: 파일 업로드가 많지 않다면 10~50MB 정도로 설정 (예: 10485760 = 10MB)
예시
- 2MB 초과 폼 데이터 전송 → 413 Payload Too Large 에러 발생
- 값을 10MB로 늘리면 해결
3. maxParameterCount란?
- 역할: 하나의 요청(GET + POST)에서 허용하는 파라미터 개수(키-값 쌍)를 제한합니다. multipart/form-data 업로드 시 파일 개수도 여기에 포함됩니다.
- 기본값: 10,000개 (Tomcat 9/10 공식 문서 기준)
- -1: 제한 없음
- 보안 목적: 파라미터를 엄청나게 많이 보내는 DoS 공격(예: HashDos)을 방지하기 위해 존재
예시
- 대량의 체크박스나 동적 폼을 제출할 때 "More than the maximum number of request parameters" 에러 발생
- 값을 1000~5000 정도로 낮추거나 필요 시 높임
4. 실제 설정 예시
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
<!-- 20MB로 증가 -->
maxPostSize="20971520"
<!-- 파라미터 5000개로 제한 -->
maxParameterCount="5000" />
5. 주의사항 (보안 중요!)
- maxPostSize를 -1로 설정하면 메모리/디스크 과부하 위험이 커져요. 가능하면 적당한 값으로 제한하세요.
- maxParameterCount를 너무 높이거나 -1로 하면 DoS 공격에 취약해집니다. (CVE-2023-28709 같은 취약점 관련) 실제 운영 환경에서는 기본값(10000)보다 낮게 설정하는 것을 권장해요.
- 파일 업로드 크기 제한이 필요하다면 servlet의 @MultipartConfig나 Spring의 MultipartResolver 설정을 함께 확인하세요.
- 설정 후 반드시 Tomcat 재시작!
마무리
이 두 속성은 Tomcat의 기본 보안 기능 중 하나예요. 필요 이상으로 완전히 풀어버리면 공격에 노출될 수 있으니, 필요한 만큼만 조정하는 게 좋습니다.
파일 업로드가 잦은 서비스라면 maxPostSize를 10~50MB 정도로, 파라미터가 많은 폼이 있다면 maxParameterCount를 상황에 맞게 조정해보세요.
반응형
'IT관련' 카테고리의 다른 글
| Apache Tomcat 설정값 정리 (0) | 2026.01.30 |
|---|---|
| 🔍 Tomcat의 maxPostSize 체크 메카니즘 (0) | 2026.01.30 |
| [JavaScript] 배열 마스터의 필수 관문, splice() 함수 완벽 정리 (0) | 2026.01.28 |
| [JS] slice, splice, split 차이점 완벽 정리 (어원과 비유로 한 번에 이해하기) (0) | 2026.01.21 |
| [GitHub] 프로젝트 화면이 바뀌었나요? 'Display options' 메뉴 완벽 정리 (1) | 2026.01.21 |