문제 상황
2024년 2학기 AI를 활용한 회의 지원 솔루션 플랫폼 "Clerker" 프로젝트를 개발할 때 EC2에서 Port forwarding을 위해 nginx를 사용했다.
Nginx를 Reverse proxy로 사용할 때, 다음과 같은 에러가 발생했다.
413 Request Entity Too Large
413 Request Entity Too Large 에러는 클라이언트가 서버로 전송한 요청의 크기가 서버에서 허용한 크기보다 클 때 발생한다. 이 문제는 특히 파일 업로드 또는 POST 요청 데이터가 많을 때 자주 나타난다.
발생 원인
1. Nginx 설정의 제한
Nginx는 너무 큰 사이즈의 request를 서버에 전송하지 못하게 제한을 걸 수 있다.
request의 Content-Length 헤더값이 여기 설정된 값을 넘을 수 없다.
POST나 PUT 등의 request 사이즈 제한을 할 수도 있지만, 보통 악의적으로 큰 용량의 파일을 업로드해서 디스크를 가득 채우는 경우를 방지하는데 사용된다.
2. 백엔드 서버 또는 애플리케이션 설정 제한
NGINX 뒤에 연결된 웹 서버 또는 애플리케이션에서도 요청 크기에 제한이 있을 수 있다.
3. 클라이언트의 비정상 요청
클라이언트가 매우 큰 파일을 업로드하거나, 잘못된 요청을 전송한 경우, 에러가 발생할 수 있다.
해결
1. Nginx 설정 변경.
EC2의 nginx.conf 설정에서 client_max_body_size 값이 기본적으로 1MB로 설정되어있는 것을 확인할 수 있었다.
nginx.conf 파일에서 다음 client_max_body_size를 0으로 설정해준다.
http {
client_max_body_size 0;
...
}
설정을 해주지 않으면 기본값은 1m이고, 제한을 두지 않으려면 0으로 설정하면 된다.
Syntax: client_max_body_size size;
Default: client_max_body_size 1m;
Context: http, server, location
2. Application에서 용량 제한 설정 변경
Spring의 application.yml 설정으로 MultipartFile의 용량 제한을 설정할 수 있다.
# application.yml
spring:
servlet:
multipart:
maxFileSize: 30MB # 파일 하나의 최대 크기
maxRequestSize: 100MB # 한 번에 최대 업로드 가능 용량
참고
https://blog.leocat.kr/notes/2020/04/21/nginx-413-request-entity-too-large
'Infra & Cloud' 카테고리의 다른 글
[Apache Kafka] Kafka Producer의 데이터 멱등성 보장하기 (0) | 2025.03.26 |
---|---|
[Apache Kafka] kafka 파헤치기 (2) | 2025.03.25 |
[EC2] 인스턴스 HikariCP Connection 고갈 문제 (1) | 2025.01.28 |