본문 바로가기

IT & 개발/etc

🚫 Nginx 413 Request Entity Too Large 오류 해결 방법

반응형

웹 서버에서 파일 업로드 또는 대용량 데이터를 전송하려 할 때, 아래와 같은 오류를 마주한 적 있으신가요?

413 Request Entity Too Large

이는 클라이언트가 서버로 보낸 요청 본문(request body)의 크기가 Nginx가 허용하는 최대 크기를 초과했을 때 발생하는 오류입니다. 기본적으로 Nginx는 1MB까지만 허용합니다.


📌 에러 상황 예시

저는 /api/parse 라는 경로로 Flask 앱에 요청을 보내는 환경에서 이 문제를 겪었습니다. POST 요청으로 PDF나 이미지 같은 데이터를 전송할 때 발생했죠.

location /api/parse {
    proxy_pass http://localhost:8088/parse;
    ...
}

🔧 해결 방법: client_max_body_size 설정 추가

Nginx 설정에서 해당 location 블록에 아래 설정을 추가합니다:

client_max_body_size 50M;

예시: 전체 location 블록 수정

location /api/parse {
    client_max_body_size 50M; # ← 요청 최대 크기를 50MB로 설정
    proxy_pass http://localhost:8088/parse;
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'Content-Type';
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

🔄 설정 적용 순서

  1. 설정 파일 저장
  2. 문법 체크:
  3. sudo nginx -t
  4. 서버 재시작 또는 reload:
  5. sudo systemctl reload nginx

📌 추가 팁: Flask 앱의 본문 크기 제한도 확인!

Flask에서는 기본적으로 본문 크기 제한이 없지만, request.data를 직접 사용할 경우라면 WSGI 서버(Gunicorn 등)에서도 제한을 걸어둘 수 있습니다. 이 부분도 함께 점검해보세요.


이제 다시 요청을 보내보면 더 이상 413 오류 없이 파일 업로드나 대용량 JSON 요청이 잘 처리될 거예요. 만약 업로드 용량이 더 크다면 100M, 200M 등으로 조절하시면 됩니다.

반응형