본문 바로가기
개발/Development

multi-part file 413, 501 error 해결하기

by 달사쿠 2021. 3. 23.
반응형

Overview

클라이언트의 브라우저에서 파일을 업로드할 때, 작은 파일 (1MB 이하)의 파일은 잘 업로드 되지만 1MB를 넘는 파일은 업로드가 실패하는 문제가 발생했습니다. 발생한 문제와 해결 방법에 대해서 간략하게 정리해보겠습니다.

 


413 error

가장 먼저 마주한 문제는 413 Request Entity Too Large error였습니다.

413 error의 경우 클라이언트의 브라우저에서 파일 업로드를 수행할 경우 파일 용량이 제한되어 발생할 수 있는 error입니다.

이때 nginx를 사용중이라면, nginx의 파일 업로드 크기를 정해 문제를 해결할 수 있습니다.

만약 파일 업로드 크기를 따로 설정하지 않은 경우, 파일의 크기가 1M가 넘는 경우에 에러가 발생할 수 있습니다.

nginx에서 업로드 사이즈 설정하기

업로드 파일의 maximum 사이즈를 설정하려면 nginx의 설정파일을 수정해야 합니다.

nginx.conf 파일은 서버 세팅 환경마다 다르지만, 일반적으로 /etc/nginx/nginx.conf  경로에 있습니다.

만약 해당 경로에 파일이 없더라도 nginx.conf의 위치를 찾아서 수정하시면 됩니다. 

sudo vim {NGINX_PATH}/nginx.conf

 

nginx.conf 파일의 http { 내용 } 부분에 해당 속성과 값을 추가하거나 변경하도록 합니다. 이때 client_max_body_size 속성과 값을 아래와 같이 설정하면 됩니다.

http {
  client_max_body_size 100M; # 100M 제한으로 세팅
  ...
}

이후 nginx를 재시작하거나, service를 재시작하시면 됩니다.

nginx -s reload
#or
service nginx restart

 

이렇게 하시면 413 Request Entity Too Large error는 해결되어있는 것을 확인하실 수 있습니다.

 


501 error

저의 경우에는 413 error를 해결하고 나니 갑자기 501 Not Implemented error가 발생했습니다.

 

갑자기 왠 501 error...?인가 싶어 작은 사이즈의 file을 업로드해보니, 작은 사이즈의 file은 또 제대로 업로드 되는 것을 확인할 수 있었고, 서버에서 발생한 log를 통해 Badly formatted multipart request 문제가 발생한 것을 확인했습니다. (에러니까 빨간색으루..ㅎㅎ)

 

참고로 해당 문제는 stackoverflow를 참고하여 application.yml에 아래와 같은 properties를 추가하여 쉽게 해결할 수 있었습니다.

 

Multipart File Exceed Limit Exception

Im using SPring boot to develop my system, but i got this exception when uploading a file that exceed 1MB ( using multipart file type ) . Can anyone explain it to me ? thank you java.lang.

stackoverflow.com

spring:
  http:
    multipart:
      maxFileSize: 100MB 		# 파일의 허용되는 최대 크기 지정
      maxRequestSize: 100MB		# multipart-data로 요청되는 파일의 허용되는 최대 크기 지정

 

반응형

'개발 > Development' 카테고리의 다른 글

[Test - Spock + Kotlin] Mocking 실패 문제  (0) 2021.07.14

댓글