웹 사이트나 API 서버를 통해 이미지를 업로드하거나 대용량 첨부파일을 전송할 때, 화면에 413 Request Entity Too Large 오류가 발생하는 경우가 많습니다.
이는 백엔드가 아닌 Nginx 프론트 서버의 기본 파일 업로드 제한 크기(기본값 1MB)를 초과했기 때문에 Nginx에서 1차적으로 요청을 차단하는 현상입니다.
1. 해결 방법
Nginx의 client_max_body_size 디렉티브를 수정하여 업로드 허용 크기를 올려주어야 합니다.
2. 단계별 설정 가이드
[1단계] Nginx 설정 파일 편집
전체 사이트에 일괄 적용하려면 nginx.conf를 수정하고, 특정 도메인에만 적용하려면 해당 사이트 설정 파일을 수정합니다.
Bash
# 전체 적용 시
sudo nano /etc/nginx/nginx.conf
# 특정 사이트 적용 시
sudo nano /etc/nginx/sites-available/default
[2단계] client_max_body_size 설정 추가
http, server, 또는 location 블록 내부에 원하시는 용량 제한(예: 50MB, 100MB)을 명시합니다.
Nginx
http {
...
# 업로드 제한 용량을 50MB로 확장
client_max_body_size 50M;
...
}
[3단계] Nginx 구문 검사 및 설정 재로드
설정 파일 오타 여부를 확인한 후 Nginx 서비스를 재로드합니다.
Bash
# Nginx 설정 파일 구문 오류 검사
sudo nginx -t
# 정상(successful) 출력 시 Nginx 재로드
sudo systemctl reload nginx
[4단계] 백엔드(PHP/Node.js) 용량 제한 동시 점검
Nginx 설정을 풀었더라도 백엔드 언어의 자체 제한이 걸려있으면 백엔드 단에서 실패합니다.
- PHP 사용 시 (
php.ini):upload_max_filesize = 50Mpost_max_size = 50M수정 후php-fpm재시작 - Node.js (Express – body-parser 사용 시):
app.use(express.json({ limit: '50mb' }));app.use(express.urlencoded({ limit: '50mb', extended: true }));