1MB이상의 이미지가 S3에 업로드 되지 않는다
ELB에서는 reverse proxy로 nginx를 사용한다 근데 그게 기본적으로 파일 업로드가 1MB로 제한되어 있다 이 설정을 수정하면 된다
리버스 프록시는 로드 밸런싱, 보안(서버의 ip주소를 노출시킬 필요가 없어짐), 캐시 데이터 저장, SSL 암호화에 사용된다
ELB에 배포하기 때문에 /platform/nginx/conf.d/elasticbeanstalk/myconf.conf 파일에
client_max_body_size 20M;
추가 해주면 된다 또한 해당 파일을 배포된 nginx설정에 추가할 수 있게 CD부분에
- name: Generate deployment package
run: |
mkdir deploy
cp build/libs/*.jar deploy/application.jar
cp Procfile deploy/Procfile
cp -r .ebextensions deploy/.ebextensions
cp -r .platform deploy/.platform # 요거 추가
cd deploy && zip -r deploy.zip .
이렇게 추가해 준다
또한 yml에도
spring:
servlet:
multipart:
max-file-size: 20MB
max-request-size: 25MB
이렇게 추가해줘야 스프링에서도 1MB 이상 multipartfile을 받는다
MultipartFile?
- 스프링에서 제공하는 인터페이스
- multipart request로 받은 파일을 표현
- multipart는 http 통신에서 multipart/fomr-data라는 Content-Type으로, http message body 부분에 boundary 기준으로 여러 데이터를 한 번 요청으로 보내는 것
max-file-size는 한번에 받을 수 있는 file의 최대 크기
max-request-size는 한번에 받을 수 있는 요청의 전체 크기