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.