본문 바로가기
I LEARNED/TIL

[TIL] [troubleshooting] 엔진엑스 연결 후 왜 1MB이상의 파일이 안올라갈까?

by veganwithbacon 2022. 10. 3.
반응형

프로젝트 진행 중 서버를 도메인에 연결 후 프론트와 연동을 했다.

엔진엑스와 연결하기 전까지만해도 잘올라가던 파일이 엔진엑스와 연동 후에 프론트에서 1MB이상의 파일을 올리지 못하게 됐다. 기존에는 에러가 나는 부분이 Multipartfile의 리스트에서 null값을 체크하는 부분에서 계속 에러가 나다보니 Spring에서 용량 최대허용량을 100MB로 해둬서 프론트쪽 오류인 줄만 알고 인지하고 있었다.

그러나 무엇이 S3와 엔진엑스와 관련이 있을까 하던 도중.. 엔진엑스에서 서버공격을 방지하기 위해 기본 전송 용량 설정이 1MB로 되어 있음을 확인할 수 있었다.

 

Nginx는 큰 용량의 파일을 대량으로 업로드하는 서버의 공격을 막고자 기본값이 1MB로 되어 있다. 따라서 하나의 파일이 1MB가 넘건 여러 개의 파일의 총합이 1MB를 넘겨서 업로드해도 결과가 같던 이유가 Nginx때문이었다. 

 

설정을 위해 커맨드창에서 아래와 같이 입력해보자

nginx.conf 내부 http 부분에서 client_max_body_size로 설정을 진행한다.

 

기본값은 1MB며, client_max_body_size는 기본적으로 명시되어 있지 않아 별도의 입력이 필요하다.

아래와 같이 http{  }내부에 client_max_body_size와 원하는 용량을 함께 기입하고 Nginx를 재시작해보자.

50MB로 설정해두고, Nginx를 리셋했다.

다시 업로드시 1MB이상의 파일들도 잘올라간다.

위 참고사진은 s3이미지로 현재 리사이징을 통해 업로드하고 있으나 테스트를 위해 코드를 잠시 바꿔둔 상태이다.

프론트와 연결시 엔진엑스를 연결했다면 확인해보자~

 

 

참고자료 :  

https://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/

https://choonse.com/2021/12/10/470/

반응형

댓글