我正在上传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;
  }


但是,当整个文件都已上传时,我仍然收到此错误。

评论

实际上,您不应该在一个请求中上传该大小。您必须将其划分为多个分区,然后根据请求将它们一一发送。

#1 楼

修改NGINX配置文件

sudo nano /etc/nginx/nginx.conf


搜索此变量:client_max_body_size。例如,如果找到它,则将其大小增加到100M。如果它不存在,则可以将其添加到http

client_max_body_size 100M;
的内部和末尾,然后重新启动nginx以应用更改。

sudo service nginx restart


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

并非所有配置都需要此文件,但是您可能还必须修改PHP上载设置以确保不进行任何操作

如果使用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


它将正常工作!!!

评论


为什么在nginx.conf中将100Mb用于client_max_body_size?

–user2979409
16年11月14日在12:10

您可以根据需要输入任何值,但100 mb就足够了

– Sukhjinder Singh
16年11月14日在12:14

但我最多可以上传30Gb文件。

–user2979409
16年11月14日在12:19

查找最大大小的文件,并允许它超过该文件的大小

– Sukhjinder Singh
16年11月14日在12:21

那么为什么client_max_body_size在我的/ location内部不起作用?

–user2979409
16年11月14日在12:23

#2 楼

如果您要上传该大小的文件,则可能应该完全禁用主体大小检查,并使用以下功能:

client_max_body_size 0;


#3 楼

相对而言,我不确定您为什么使用http传输那么多数据。我倾向于在ssh上进行大量传输,这使我获得了bzip压缩的传输。但是,如果需要进行可恢复的传输,则可以使用sftp,lftp甚至rsync。这些(或它们的派生或同级兄弟)中的任何一个都能够


(如果需要)使用加密的频道,
恢复中断的传输并
压缩传输
/>
尝试通过http上传(如果是https,则为#1)时,只有其中一种是您的选择。

我希望您能研究一下以上或其他几种选择中的一种。

评论


这与问题毫无关系。

– Zenklys
18年7月7日在10:10

因为那里的家伙正在通过HTTP传输Blueray规模的文件,所以它就在那里。如果没有更详细地说明为什么有人想要这样做,我认为最好是通过不成功回答问题来帮助提出问题的人。我承认我对这些细节的无知是一个问题。

–马特·墨菲(Matt Murphy)
18年11月9日在20:56