부캠웹모_최종발표_8기_ppt템플릿.pptx
슬라이드 12
이어서 백엔드 발표하겠습니다. 저희는 구현 과정에서 발생했던 문제 가운데 공유해 볼 만한 토픽들을 골라 소개해드리고자 합니다. 그 전에 저희 아키텍쳐를 잠시 소개드리자면, 저희는 docker와 github actions을 이용하여 API 서버를 지속적으로 배포하고 있고 API 서버 앞단에 ssl 인증서 처리를 위해 nginx를 리버스 프록시 서버로 두고 서버를 운영하고 있습니다.
슬라이드 13
방금 리버스 프록시 서버로 Nginx를 사용하고 있다고 말씀드렸는데요, nginx 사용중에 생긴 문제를 먼저 공유해볼까 합니다.
파일 업로드 API를 완성하고, 클라이언트 측에서 API를 연결하는 과정에서 파일 크기가 너무 크다는 413 에러가 발생했습니다. 서버에선 최대 10MB까지 받아들일 수 있도록 설정했고, 클라이언트는 1MB 사진으로 테스트를 진행했는데 말이죠. 심지어 저희가 로컬에서 테스트를 했을 때에는 전혀 발생하지 않았던 문제라 원인을 추측하기가 어려웠습니다.
원인은 Reverse Proxy인 Nginx 때문이었습니다. 클라이언트의 요청이 nginx를 지나 저희 서버에 도착하는데, Nginx 환경 파일에서 client_max_body_size 값을 설정하지 않아 수용할 수 있는 request body 크기가 디폴트인 1MB로 제한되었던 것이죠.
따라서 413 에러는 Nginx 환경 파일에서 client_max_body_size를 10MB로 설정함으로써 간단히 해결할 수 있었습니다.
다만 유의할 점은 client_max_body_size는 이미지 파일 크기에 대한 제한이 아니라, 이미지를 포함한 전체 request body의 크기를 제한한다는 것입니다.
슬라이드 14
다음으로는 많이들 사용하셨을 swagger를 사용하며 겪은 문제를 공유하도록 하겠습니다.