카테고리 없음

413 Request Entity Too Large

또또니엘 2024. 6. 12. 18:23

🚨   에러 발생 시나리오

- 에디터를 통한 게시글 작성 시 발생
- 에러

🔎  원인

- nginx에서 client request body size의 default 값이 1M가로 지정되어있어 이를 초과하게되면 http 413 상태코드가 나오게 된다. 


✏️  공부

- HTTP status 413 : 
-- 413 응답 상태 코드는 요청 엔터티가 서버에 의해 정의된 제한보다 크다는 것을 나타냅니다.
-- RFC 9110 이전에는 이 상태 코드 이름이 Payload Too Large 였습니다.

* RFC 9110 : HTTP 요청과 응답의 구조, 메서드, 상태 코드, 헤더 필드, 콘텐츠 협상, 인코딩, 캐싱, 상태 관리 등을 상세히 설명한 문서

* https://developer.mozilla.org/ko/docs/Web/HTTP/Status/413
 

413 Content Too Large - HTTP | MDN

HTTP 413 Content Too Large 응답 상태 코드는 요청 엔터티가 서버에 의해 정의된 제한보다 크다는 것을 나타냅니다. 서버는 연결을 닫거나 Retry-After 헤더 필드를 반환할 수 있습니다.

developer.mozilla.org

 

 

🔨 해결

1. 이미지와 같이 nginx 설정에 client request body size를 명시해준다.


💬  자연스럽게 될 줄 알았지만 같은 오류가 반복된다...
그러던 중 NestJS 내에서도 body size를  설정해야 한다는 것을 알게되었다.
 


2.  NestJS main.ts 파일에 다음과같이 설정해준다.

// json 형태의 본문 크기를 제한
app.use(json({ limit: '50mb' })); 

// application/x-www-form-urlencoded(HTML 폼 데이터에서 전송되는 데이터 형식) 형태의 본문 크기를 제한
app.use(urlencoded({ extended: true, limit: '50mb' }));