nginx 업로드 파일 용량 초과 오류 해결 - HTTP 413 client intended to send too large body
서비스에서 특정 파일 업로드시 에러가 난다고 해서 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 에 설정 가능합니다.