Nginx中设置了“ client_max_body_size”的“ 413请求实体太大”


54

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

但是当整个文件上传完毕后,我仍然收到此错误。

Answers:


69

修改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上传设置,以确保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

它将正常工作!


1
为什么在nginx.conf中将100Mb用于client_max_body_size?
user2979409 '16

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

但我最多上传30Gb文件。
user2979409 '16

查找最大大小的文件,并允许它超出该文件的大小
Sukhjinder Singh

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

9

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

client_max_body_size 0;

3

相对而言,我不确定您为什么要使用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. 如果需要,可以使用加密通道,
  2. 恢复传输中断
  3. 压缩传输

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

希望您能研究以上任何一种或其他几种选择。


这与问题无关。
Zenklys

1
因为那里的家伙正在通过http传输Blueray规模的文件,所以它就在那里。如果没有更多人为什么要这样做的详细信息,我认为最好是通过不成功回答问题来帮助提出问题的人。我承认我对这些细节的无知是一个问题。
马特·墨菲
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.