访问上传接口控制台报错 详细原因 net::err_connection_reset,于是用postman测试报错 nginx 413 Request Entity Too Large
这个报错就很明显了,nginx对上传文件的大小有了限制,去看看nginx的配置就知道了。
client_max_body_size 100M; 设置的值有点小,修改这个配置就可以了
配置项的优先级顺序是:location > server > http
1、http配置,这将作为全局的默认值
http {client_max_body_size 200m; # 客户端请求服务器最大允许大小...
}2、server配置,只在server块中生效
server {client_max_body_size 500m;...
}3、location配置,只在指定的url中生效
location /upload {client_max_body_size 1G;...
}
修改完后要重启nginx才会生效
1、参考博客,记录下面配置,以后可能用到
Nginx + PHP 8.0支持视频上传_nginx+php8-CSDN博客
配置超时时间
上传大文件可能需要更多的时间,因此你需要增加相关的超时时间:http {client_body_timeout 120s; # 设置上传超时时间为120秒send_timeout 120s; # 设置发送超时时间为120秒keepalive_timeout 120s; # 设置保持连接超时时间为120秒...
}整缓冲区大小
缓冲区的大小影响文件上传的性能,可以根据服务器的资源和文件大小调整这些缓冲区大小:http {client_body_buffer_size 256k; # 调整请求体的缓冲区大小client_header_buffer_size 1k; # 调整请求头的缓冲区大小large_client_header_buffers 4 32k; # 调整大请求头的缓冲区大小...
}
2、后面再测试上传测试一个2G,报错nginx 504 Gateway Time-out
使用的proxy_pass进行的请求转发,修改相关参数,改成300,上传成功。
location /upload {client_max_body_size 2G;proxy_connect_timeout 300; # 之前默认是60proxy_send_timeout 300;proxy_read_timeout 300;...
}
有个问题,前端访问这个上传接口,上传2g的文件到云存储,后端代码的日志记录差不多等了10分钟才开始有反应。
这个有点不正常,前端到后端这么长时间是在加载还是啥,有待考究。后端日志动起来到上传成功是正常的。
查资料
1、在nginx中,client_body_temp是一个用于存储客户端请求体数据(例如上传文件)的临时文件目录。
当客户端发送包含请求体数据的请求时(例如:通过post请求上传文件),nginx会将请求数据存储在临时文件中。这个过程是否需要时间,