상세 컨텐츠

본문 제목

413 Request Entity Too Large - Nginx

트러블슈팅

by ksjsjsj 2024. 10. 26. 18:01

본문

다층 아키텍처에서 아키텍처간 상호작용을 유의해야 하는 이유!!!!!

원인?

  • Nginx파일 업로드 용량 제한의 디폴트 값은 1MB이다.
  • 1MB 초과 파일 업로드 시 413 Request Entity Too Large 오류가 발생한다.

 

해결방법?

1. 애플리케이션 레벨에서 파일 크기 제한 구현

  • MaxUploadSizeExceededException 예외 사용
  • ENUM을 활용한 에러 코드 및 메시지 관리

2. 사용자 경험 개선

  • 1MB 초과 파일 업로드 파일 업로드 차단
  • 사용자에게 알람 표시

 

구현 예시

FileUtil.java

@Component
public class FileUtil {
	// 업로드 용량 제한
	private static final long MAX_FILE_SIZE_BYTES = 1024 * 1024; // 1MB

	public File saveFile(MultipartFile mf) throws FileUploadException {
    	
        try {
			// 업로드하는 파일 크기
			long getByte = mf.getSize();
			
			if(getByte > MAX_FILE_SIZE_BYTES) {
				System.out.println("파일의 크기는 1MB를 넘을 수 없습니다.");
		        throw new MaxUploadSizeExceededException(MAX_FILE_SIZE_BYTES);
			}
            
        } catch (FileUploadException e) {
	        e.printStackTrace();
	        throw new FileUploadException("파일의 크기는 1MB를 넘을 수 없습니다.", e);
		}
	}
}

 

 

 

문제점

  • JAVA 코드만으로는 413 Request Entity Too Large 오류 방지가 불가능
  • Nginx가 요청을 먼저 차단하여 Java 코드가 실행되지 않음!

 

추가사항

  • Nginx 설정 변경
  • nginx.conf에서 업로드 크기 제한을 2MB로 늘려서 위 문제를 해결했다.
http {
    // Nginx 수정 내용 (해당 설정 추가)
    client_max_body_size 2M;
    
}

 

 

교훈

다층 아키텍처에서는 각 계층의 설정이 상호작용하기 때문에 상호작용을 고려한 적절한 처리가 필요하다!

관련글 더보기