Nginx中的“413 Request Entity Too Large”,设置了“client_max_body_size”

我正在上传一个26Gb文件,但我得到:

413 Request Entity Too Large

我知道,这与client_max_body_size有关,所以我将此参数设置为30000M

  location /supercap { root /media/ss/synology_office/server_Seq-Cap/; index index.html; proxy_pass http://api/supercap; } location /supercap/pipe { client_max_body_size 30000M; client_body_buffer_size 200000k; proxy_pass http://api/supercap/pipe; client_body_temp_path /media/ss/synology_office/server_Seq-Cap/tmp_nginx; } 

但是当整个file upload的时候,我仍然得到这个错误。

修改NGINXconfiguration文件

 sudo nano /etc/nginx/nginx.conf 

search这个variables: client_max_body_size 。 例如,如果你find它,就把它的大小增加到100M。 如果它不存在,那么你可以在http的内部和之后添加它

 client_max_body_size 100M; 

重新启动nginx以应用更改。

 sudo service nginx restart 

修改上传限制的PHP.ini文件

这并不是所有configuration都需要的,但是您也可能需要修改PHP上传设置,以确保没有任何事情会因为phpconfiguration而超出限制。

如果您正在使用PHP5-FPM,请使用以下命令,

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

如果您使用的是PHP7.0-FPM,请使用以下命令,

 sudo nano /etc/php/7.0/fpm/php.ini 

现在逐个查找下面的指令

 upload_max_filesize post_max_size 

并将其限制为100M,默认为8M和2M。

 upload_max_filesize = 100M post_max_size = 100M 

最后保存并重新启动PHP。

PHP5-FPM用户使用这个,

 sudo service php5-fpm restart 

PHP7.0-FPM用户使用这个,

 sudo service php7.0-fpm restart 

它会正常工作!

尊重,我不知道你为什么使用http传输这么多的数据。 我倾向于通过ssh进行大量传输

 //such as: tar cjf - /path/to/stuff | ssh user@remote-host "cd /path/to/remote/stuff;tar xjf -" 

…这给了我一个bzip压缩传输。 但是,如果我需要做一个可恢复的传输,我可能会使用sftp,lftp,甚至rsync。 任何这些(或其衍生物或兄弟姐妹)都有能力

  1. 如果需要采用encryption通道,
  2. 恢复中断的转移和
  3. 压缩转移

尝试通过http上传时,只有其中的一个是您的select(即,如果您使用的是https,则为#1)。

我希望你会看看上面的或其他几个select。