서비스에서 특정 파일 업로드시 에러가 난다고 해서 nginx 의 에러 로그를 찾아 보니 다음과 같은 에러가 보였습니다.


2020/03/17 15:48:28 [error] 28078#28078: *2273360 client intended to send too large body: 706373782 bytes, client: cli, server: example.com, request: "POST /upload", host: "example.com",
CODE


원인을 찾아 보니 nginx 의 가상 호스트에는 최대 용량을 지정하는 키워드인 client_max_body_size 가  500M 로 설정되어 있었는데 그보다 큰 파일이 업로드되서 발생한 일이었습니다.

server {
   // ....
   client_max_body_size 500m;
CODE


client_max_body_size 의 기본 값을 1m 이며 HTTP Client 의 Content-Length 헤더값이 이보다 클 경우 nginx 는 HTTP 413 에러(Request Entity Too Large) 를 전송하며 이때 위와 같은 에러 로그가 남깁니다.


해결책은 client_max_body_size 값을 늘려주거나 또는 업로드 파일 사이즈 제한을 하지 않도록 0으로 설정하고 nginx 를 재구동하면 됩니다.

server {
   // ....
   client_max_body_size 0;
CODE

client_max_body_size 는 http, server, location 에 설정 가능합니다.


Ref