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

Mar*_*lka 4 nginx artifactory

我在nginx后面有一个Artifactory,上传大于4 GB的文件失败。我可以肯定这是nginx的错,因为如果文件从本地主机上传到本地,则不会发生任何问题。

nginx的设置有client_max_body_sizeclient_body_timeout足够大的并非是一个问题。

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

Mar*_*lka 5

就我而言,问题是在根目录上安装的磁盘空间不足。我的磁盘/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;
}
Run Code Online (Sandbox Code Playgroud)

最后一行是重要的部分-我告诉nginx在/home空间中摆弄其文件。