我在nginx后面有一个Artifactory,上传大于4 GB的文件失败了。我很确定这是nginx的错,因为如果文件是从/向localhost上传的,那么就不会出现问题。
nginx设置为client_max_body_size
和client_body_timeout
足够大,不会出现问题。
但是,当通过curl上传大文件(> 4 GB)时,大约半分钟后它就会失败。我收到的唯一错误消息是HTTP 500 Internal Server Error
,没有任何内容写入nginx的错误日志。
答案 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
空间中摆弄它的文件。