Nginx 服务器上传大文件经常中断的解决方法

当上传大的文件时经常中断后重头再传或上传超时,原因是nginx对上传文件大小有限制,而且默认是1M,超时时间默认为60秒。

nginx上传文件

若上传文件很大如50m或网络很慢,还要适当调整上传超时时间。

Nginx 有两个参数需要调整或添加:

1
2
client_max_body_size 100M;
client_body_buffer_size 512k;

参数解释

  • client_max_body_size 默认 1M,表示 客户端请求服务器最大允许大小,在“Content-Length”请求头中指定。如果请求的正文数据大于client_max_body_size,HTTP协议会报错 413 Request Entity Too Large。就是说如果请求的正文大于client_max_body_size,一定是失败的。如果需要上传大文件,一定要修改该值。
  • client_body_buffer_size 缓冲区代理缓冲用户端请求的最大字节数,设置不能太大,也不能太小,传输的数据大于 client_max_body_size,一定是传不成功的。小于client_body_buffer_size 直接在内存中高效存储。如果大于 client_body_buffer_size 小于 client_max_body_size 会存储临时文件,临时文件一定要有权限。 如果追求效率,就设置 client_max_body_size client_body_buffer_size 相同的值,这样就不会存储临时文件,直接存储在内存了。

关于超时的设置

1
2
3
proxy_connect_timeout     60s; 
proxy_read_timeout      1m;
proxy_send_timeout      1m;

  • client_body_timeout # 读取请求实体的超时时间,若超过所设定的大小,返回413错误
  • proxy_connect_timeout # http请求无法立即被容器(tomcat, netty等)处理,被放在nginx的待处理池中等待被处理。此参数为等待的最长时间,默认为60秒,官方推荐最长不要超过75秒
  • proxy_read_timeout # http请求被容器(tomcat, netty等)处理后,nginx会等待处理结果,也就是容器返回的response。此参数即为服务器响应时间,默认60秒
  • proxy_send_timeout # http请求被服务器处理完后,把数据传返回给Nginx的用时,默认60秒

把它们酌情增大。

本文网址: https://pylist.com/topic/41.html 转摘请注明来源

Suggested Topics

golang 计算大文件md5

以前介绍过用python 计算大文件的md5 值,这里将介绍使用 golang 计算大文件md5...

python 标准库读写CSV 文件

CSV 是(Comma Separated Values 逗号分隔值)的英文缩写,通常都是纯文本文件。这里介绍使用python 标准库读写csv 文件的方法。...

自己组装21瓦低功耗家庭爬虫、文件、web服务器

一直想自己组装一个低功耗的家庭服务器,放在家里,想怎么折腾就怎么折腾。目的是低功耗,性能足够用,能安装一些个人需要的服务,比如爬虫、文件存放、web应用,要求成本较低。...

Openresty使用lua-resty-upload模块上传并保存文件

OpenResty 是一个基于 Nginx 与Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。这里将用到 lua-resty-upload 模块来处理上传超大的文件的请求。...

Leave a Comment