파일 업로드 문제 해결(nginx 413)

Yi Kanghoon·2023년 1월 15일
1

개요


서비스 매니저(?)를 맡고 계신 선생님이 받은 테스트 중인 학생의 카톡....

처음에는 문제의 원인이 감이 잡히지 않아서 해결하는데 문제가 있었음.

개발자 도구에서 상태 코드나 에러 메시지를 볼 수 있으면 좋겠지만 개발자 도구 사용을 해보지 않은 학생이었고, 로그에도 잘 나타나지 않아서 직접 테스트 해봐야 하는 상황.

테스트

  1. 파일 확장자에 문제가 있었나 싶어서 테스트 시작.
    문제 없음. 아래 코드의 모든 파일에서 제대로 작동함.
    const FILE_EXISTENSION = /jpg|jpeg|png|svg|webp|pdf|doc|docx/;

  2. 파일 크기의 문제인가 싶어 조금 더 큰 이미지를 삽입하려고 시도.
    사진이 업로드 되지 않음. 따라서 최대 파일 크기를 제한한 부분을 수정하려는데...

const MAXSIZE = 1e7;

파일 크기가 10Mb가 넘는다고?
다시 생각해보니 파일 크기 초과라면 업로드 할 때 alert 창을 봤을 것임.

상태 코드를 보자

상태 코드를 확인하지 않고 조금 좌절해 있었는데, 사진 업로드 요청의 응답 상태 코드를 보니 413으로, 한 번도 본 적이 없어 구글링.


백엔드 코드 끄적인다고 될 문제가 아니었음

해결

http {
    client_max_body_size 10M;
    ...
}

nginx 설정에서 위와 같은 설정값 추가 후 해결. 기본값은 1M이었으며, 제한을 두지 않으려면 0으로 입력하면 되지만 혹시 모를 악성(?)요청을 막고자 백엔드 코드와 일치하게 수정함.

반전

가능한 파일 형식들은 사용자가 볼 수 있게 view에 명시하자... 고쳤다고 해놓고 안 된다고 욕먹을뻔....

profile
Full 'Snack' Developer

0개의 댓글