上传大文件时nginx返回内部服务器错误(几GB)

时间:2016-08-10 12:42:48

标签: nginx artifactory

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

nginx设置为client_max_body_sizeclient_body_timeout足够大,不会出现问题。

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

1 个答案:

答案 0 :(得分:5)

我的问题是root上安装的磁盘空间不足。我在/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在/home空间中摆弄它的文件。