nginx returns 上传大文件(几 GB)时出现内部服务器错误

nginx returns Internal Server Error when uploading large files (several GB)

我在 nginx 后面有一个 Artifactory,上传大于 4 GB 的文件失败。我很确定这是nginx的错,因为如果文件上传到from/to localhost,不会出现问题。

nginx 设置为 client_max_body_sizeclient_body_timeout 足够大,这不会成为问题。

仍然,当通过 curl 上传大文件 (>4 GB) 时,大约半分钟后失败。我收到的唯一错误消息是 HTTP 500 Internal Server Error,没有任何内容写入 nginx 的错误日志。

我的问题是安装在 root 上的磁盘 space 不足。我在 /home 上安装了一个巨大的磁盘,但在 / 上只剩下大约 4 GB。我假设 nginx 在那里保存传入的请求主体,在它填满后,请求被关闭。

我修复它的方法是将这些行添加到 nginx.conf 文件(不一定需要所有行):

http {
    (...)
    client_max_body_size 100G;
    client_body_timeout 300s;

    client_body_in_file_only clean;
    client_body_buffer_size 16K;
    client_body_temp_path /home/nginx/client_body_temp;
}

最后一行是重要的部分 - 我告诉 nginx fiddle 及其在 /home space.

中的文件