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

use*_*409 91 nginx

我正在上传一个 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;
  }
Run Code Online (Sandbox Code Playgroud)

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

小智 118

修改 NGINX 配置文件

sudo nano /etc/nginx/nginx.conf
Run Code Online (Sandbox Code Playgroud)

搜索此变量:client_max_body_size。例如,如果找到它,只需将其大小增加到 100M。如果它不存在,那么您可以将其添加到 http 的内部和末尾

client_max_body_size 100M;
Run Code Online (Sandbox Code Playgroud)

重新启动 nginx 以应用更改。

sudo service nginx restart
Run Code Online (Sandbox Code Playgroud)

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

并非所有配置都需要它,但您可能还必须修改 PHP 上传设置,以确保 php 配置不会超出限制。

如果您使用的是 PHP5-FPM,请使用以下命令,

sudo nano /etc/php5/fpm/php.ini
Run Code Online (Sandbox Code Playgroud)

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

sudo nano /etc/php/7.0/fpm/php.ini
Run Code Online (Sandbox Code Playgroud)

现在一一找到以下指令

upload_max_filesize
post_max_size
Run Code Online (Sandbox Code Playgroud)

并将其限制增加到 100M,默认情况下它们是 8M 和 2M。

upload_max_filesize = 100M
post_max_size = 100M
Run Code Online (Sandbox Code Playgroud)

最后保存并重启PHP。

PHP5-FPM 用户使用这个,

sudo service php5-fpm restart
Run Code Online (Sandbox Code Playgroud)

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

sudo service php7.0-fpm restart
Run Code Online (Sandbox Code Playgroud)

它会工作得很好!!!

  • 但我上传的文件最大为 30Gb。 (3认同)

dev*_*ius 23

如果您要上传该大小的文件,您可能应该完全禁用正文大小检查:

client_max_body_size 0;
Run Code Online (Sandbox Code Playgroud)


Mat*_*phy 7

顺便说一句,我不确定您为什么要使用 http 来传输这么多数据。我倾向于通过 ssh 进行大额传输

//such as:
tar cjf - /path/to/stuff | ssh user@remote-host "cd /path/to/remote/stuff;tar xjf -"
Run Code Online (Sandbox Code Playgroud)

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

  1. 如果需要,使用加密通道,
  2. 恢复中断的传输和
  3. 压缩传输

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

我希望你能研究以上任何一个或其他几个替代方案。

  • 之所以存在,是因为这家伙正在通过 http 传输蓝光级文件。在没有更多关于为什么有人想要这样做的细节的情况下,我认为提出问题的人最好不要成功回答问题。我承认我对这些细节的无知是一个问题。 (4认同)
  • 这与问题无关。 (2认同)