logo

413 Request Entity Too Large 문제에 대해

Server Side March 19, 2019

이 역시 최초에 nginx 서버를 설정하고 얼마 지나지 않아 개발을 할때 생기는 문제였습니다.

 

대게 POST 방식으로 파일을 전송할 때 보게되는 에러입니다. 저같이 서버이전을 하는 사람은 phpmyadmin 으로 데이터베이스 이전중에 보게되는 문제이기도 하죠.

어느부분이 문제나면 기본으로 nginx와 php는 전송되는 POST 데이터의 제한이 엄청 낮게 설정되어있습니다. 2Mbyte 정도?

이 설정을 왠만한 파일은 허용되도록 풀어주어야 합니다.

 

먼저 그나마 익숙한 php 부터 바꾸는 방법을 알아봐요.

php.ini 파일 위치는 각자 설치한 php 버전에 따라 상이할 수 있습니다. 전 nginx 환경 위에서 돌아가는 php7.2-fpm 버전이라 경로는 아래와 같습니다. vi 에디터가 열리면 커맨드라인에 아래와 같이 찾기기능을 적용합니다.

 

1
2
#sudo vi /etc/php/7.2/fpm/php.ini
:/upload_max
cs

 

그럼 아래처럼 해당위치로 바로 이동되는데 여기의 값을 자신이 원하는 크기로 바꿉니다. 전 64메가정도로 전체적으로 조정할 예정이라 아래처럼 바꾸었습니다.

 

 

한가지 더, 바로 아래 보이는 max_file_uploads 는 한번에 올릴 수 있는 파일의 수를 말합니다. 기본값이 20인데 이 부분도 필요에 따라 변경할 수 있습니다.

이어서 값을 하나 더 변경해봅시다. 이 값도 원하는 수치만큼 바꿔줍니다. 전 64메가!

 

이렇게 까지 수정하고 :wq 로 수정후 종료이후 php 서비스를 재시작 시켜줍니다.

 

1
$ sudo service php7.2-fpm reload
cs

 

php 설정은 끝났습니다. 만약 서버를 nginx를 사용하고 있다면 서버설정에서 아래 구문 한 줄을 추가시켜주어야 합니다.

 

1
2
3
4
5
6
7
#sudo vi /etc/nginx/nginx.conf
...
 
http {
    client_max_body_size 64M;
 
    ...
cs
1
2
$ sudo service nginx reload
 
cs

 

그리고 마찬가지로 :wq 저장 후 종료이후 nginx 서비스를 재시작 해줍니다.

 

끝났습니다! 이제 설정한 전송값의 크기 만큼은 문제없이 전송될꺼에요!