413 요청 엔티티가 너무 큼-파일 업로드 문제


101

내 서버에 30MB 파일을 업로드하려고하는데 작동하지 않습니다.

  1. 내가 30메가바이트 파일을 업로드 할 때 페이지가로드는 " 페이지를 찾을 수 없습니다 "

  2. 3MB 파일을 업로드 할 때 nginx / 0.6.32에서 " 413 Request Entity Too Large "를 수신합니다.

" client_max_body_size "를 늘릴 수 있도록 nginx를 찾으려고하는데 서버에 설치된 nginx를 찾을 수 없습니다. 나는 심지어 달리기를 시도했다.

vi /etc/nginx/nginx.conf

또는

vi /usr/local/nginx/conf/nginx.conf

구성 파일이 있는지 확인하기 위해 서버에서 찾을 수 없습니다.

이 문제를 해결할 방법이 있습니까? 또는 내 서버에 nginx를 설치해야합니까?

편집하다:

내 php.ini 파일에서 필요한 모든 사항을 변경했습니다.

post_max_size 128M
upload_max_filesize 100M
memory_limit 256M

고마워, 라주


당신을 도와 어쩌면이 링크를 찾아보세요 cyberciti.biz/faq/... rtcamp.com/tutorials/php/increase-file-upload-size-limit
— Ashouri

안녕하세요 Mohammad, nginx를 찾았지만 내 서버에서 찾을 수 없습니다. 내 서버에 nginx가 설치되어 있지 않으므로 Nginx에 속하는 오류 메시지가 표시되는 이유가 혼란 스럽습니다
— Raju Vishwas

먼저 확실히 ngix 서버에 설치되어 있지만 mustbe 완전히 확인, 혼동 해커에 대한 어쩌면 보안을 위해 일부 서버 관리자는이 트릭을 사용하는 경우
— Ashouri

ps aux | grep nginx실행 중인지 확인 하기 위해 a 를 시도해 보셨습니까 ?
— rpkamp 2014-06-19

시도해 보셨습니까 which nginx? 그러면 구성 파일이 아닌 실행 파일의 위치가 제공되지만 최소한 nginx가 설치되어 있는지 여부를 확인해야합니다.
— Doug McLean

답변:


131

출처 : http://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/

nginx의 conf 파일을 편집합니다.

nano /etc/nginx/nginx.conf

http 섹션에 다음 행을 추가하십시오.

http {
    client_max_body_size 100M;
}

MB를 사용하지 마십시오. M 만 작동하지 않습니다!

또한 nginx를 다시 시작하는 것을 잊지 마십시오

systemctl restart nginx

이렇게하면 413이 404로 바뀝니다. EC2에서 Amazon Linux를 사용하고 있습니다. 또한 nginx 문서에는 소문자 'm'이 표시됩니다. nginx.org/en/docs/http/…
— nu everest

파일을 변경하려면 암호를 요구합니다. 하지만 설정 한 기억이 없습니다. 내가 뭔가 빠졌나요?
— Sooraj

1
nano의 경로는 nano /etc/nginx/nginx.conf 여야합니다.
— MaXi32

나를 위해 일했지만 참고 : 구성에 이미 http { }섹션 이 있으면 나머지 섹션을 추가하십시오! 새 http {}섹션을 추가 하면 실패하고 "http" directive is duplicateNginx 로그에 오류가 발생합니다.
— jerclarke

43

-in php.ini (내부 /etc/php.ini)

 max_input_time = 24000
 max_execution_time = 24000
 upload_max_filesize = 12000M
 post_max_size = 24000M
 memory_limit = 12000M

-nginx.conf (/ opt / nginx / conf 내부)

client_max_body_size 24000M

내 사건을 위해 일해


안녕하세요 Arun, 우리 서버의 문제는 nginx가 설치된 것을 찾을 수 없지만 여전히 nginx 오류가 발생합니다
— Raju Vishwas

/ opt 또는 / etc에서 nginx를 찾으십시오. nginx에서 conf 폴더를 찾은 다음 nginx.conf를 찾습니다.
— Arun

위의 아이디어가 작동하지 않으면 검색 도구로 전체 Linux 내에서 nginx.conf를 검색하십시오.
— Arun

`max_input_time = 24000`, 24000은 밀리 초 단위입니까?
— Rishabh 인스 Agrahari

1
트윗 담아 가기 최대 시간을 초 단위로 설정합니다. 기본 설정은 -1로, 대신 max_execution_time이 사용됩니다. 무제한 시간을 허용하려면 0으로 설정
— Sean

18

먼저 Nginx 구성 파일 ( nginx.conf)을 편집합니다.

위치: sudo nano /etc/nginx/nginx.conf

다음 코드를 추가하십시오.

http {
        client_max_body_size 100M;
}

그런 다음 PHP 구성 파일 (php.ini )

위치: sudo gedit /etc/php5/fpm/php.ini

다음 코드를 추가하십시오.

memory_limit = 128M 
post_max_size = 20M  
upload_max_filesize = 10M

1
nginx.conf지시에 따라 파일을 열었 지만 비어있었습니다! 나는 그것을 예상하지 못했지만, 당신의 코드를 추가했을 때 그것은 여전히 ​​작동했습니다.
— 앤드류 폭스

9

다음과 같이 nginx의 전역 구성 대신 가상 호스트에 직접 변경 사항을 추가합니다.

   server {
     client_max_body_size 100M;
     ...
   }

그런 다음 위의 주석과 같이 php.ini의 매개 변수를 변경합니다.

   max_input_time = 24000
   max_execution_time = 24000
   upload_max_filesize = 12000M
   post_max_size = 24000M
   memory_limit = 12000M

잊을 수없는 것은 nginx와 php-fpm을 다시 시작하는 것입니다. centos 7에서는 다음과 같습니다.

  systemctl restart nginx
  systemctl restart php-fpm

8

도메인 nginx 파일을 입력하십시오 :

nano /etc/nginx/sites-available/domain.set

이 코드 파일에 추가

client_max_body_size 24000M;

오류가 발생하면이 명령을 사용하십시오.

nginx -t

7
sudo nano /etc/nginx/nginx.conf

그런 다음 http 섹션에 줄을 추가하십시오.

http {
    client_max_body_size 100M;
}

MB 만 사용하지 마십시오.

systemctl restart nginx

그런 다음 PHP 위치

sudo gedit /etc/php5/fpm/php.ini

요즘 최대 사용 PHP 7.0 이상

sudo nano /etc/php/7.2/fpm/php.ini     //7.3,7.2 or 7.1 which php you use

당신의 욕망에 의해 증가하는 것을 확인하십시오.

memory_limit = 128M 
post_max_size = 20M  
upload_max_filesize = 10M

php-fpm 다시 시작

service php-fpm restart 

4

php.ini 파일에서 필요한 사항을 변경했다고 가정합니다.

다음 경로에있는 nginx.conf 파일에 다음 줄을 추가하여 문제를 해결할 수 있습니다.

/etc/nginx/nginx.conf

그런 다음 다음과 같이 vim 텍스트 편집기를 사용하여 파일을 편집하십시오.

vi /etc/nginx/nginx.conf

다음과 같이 충분히 큰 값으로 client_max_body_size를 추가합니다.

client_max_body_size 20MB;

그 후에 :xi또는 사용하여 저장하십시오.:wq

그런 다음 nginx를 다시 시작하십시오.

그게 다야.

나를 위해 일했고 이것이 도움이되기를 바랍니다.


2

위의 변경 사항으로 작업하는 업로드가 있습니다. 그러나 변경을 수행했을 때 파일 업로드에서 404 응답을 받기 시작하여 추가 디버깅을 수행하고 nginx error.log를 확인하여 권한 문제를 파악했습니다.

해결책:

/ var / lib / nginx에서 현재 사용자 및 그룹 소유권을 확인하십시오.

$ ls -ld /var/lib/nginx

drwx ------. 3 nginx nginx 17 10 월 5 일 19:31 / var / lib / nginx

이는 존재하지 않을 수있는 사용자 및 nginx라는 그룹이이 폴더를 소유하고 있음을 나타냅니다. 이로 인해 파일이 업로드되지 않습니다.

제 경우에는 "/etc/nginx/nginx.conf"에 언급 된 사용자 이름이

user vagrant; 

이 경우 vagrant에서 폴더 소유권을 nginx.conf에 정의 된 사용자로 변경합니다.

$ sudo chown -Rf vagrant:vagrant /var/lib/nginx

실제로 변경되었는지 확인하십시오.

$ ls -ld /var/lib/nginx
drwx------. 3 vagrant vagrant 17 Oct  5 19:31 /var/lib/nginx

보다 안전한 sade를 위해 nginx 및 php-fpm을 다시로드하십시오.

$ sudo service nginx reload
$ sudo service php-fpm reload

이제 권한 거부 오류가 사라집니다. error.log를 확인하십시오 (nginx.conf error_log 위치 기반).

$ sudo nano /path/to/nginx/error.log

0

파일 열기 /etc/nginx/nginx.conf 추가 또는 변경client_max_body_size 0;


0

사용하다:

php -i

명령 또는 추가 :

phpinfo();

구성 파일의 위치를 ​​가져옵니다.

필요와 서버에 따라 이러한 변수를 업데이트하십시오.

max_input_time = 24000
max_execution_time = 24000
upload_max_filesize = 12000M
post_max_size = 24000M
memory_limit = 12000M

Linux에서는 새 ini 설정이로드되도록 nginx / apache 및 phpfpm 서비스를 다시 시작해야합니다. xampp, ammps에서는 이러한 응용 프로그램과 함께 제공되는 제어판에서 다시 시작할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.