Nginx 反代上传大文件时 502

22 天前
 ddddjent

如题,log: 2024/06/04 02:11:30 [error] 29#29: *2 writev() failed (104: Connection reset by peer) while sending request to upstream

现在发现好像是用 go-gin 作为后端在读到 header 里的 authorization 不对时就直接返回错误,导致 nginx 在文件 body 还没有上传完时就结束连接,返回 502 ,而不是 401

我目前的办法是强制要求后端读完 body,但是这样可能很慢,各位大佬有无直接配置 nginx 来解决这个问题的方法?

1696 次点击
所在节点    NGINX
14 条回复
Red998
22 天前
大文件、断点续传? oss 一般都有方案吧
ayelky
22 天前
超时了吧,设置超时时间长一些不就可以了
ddddjent
22 天前
@ayelky 不是吧 我感觉好像是服务器返回 401 太快了 设个长点的延迟反而就好了
ChovyChu
22 天前
盲猜跟 authorization 的校验有时效性有关
shinession
22 天前
client_max_body_size 512M;
OP 查下这个参数用法, 可以解决上传文件大小问题
ddddjent
22 天前
@shinession 我试了一下,这个是 client 给 nginx post 的 body 限制,好像不能解决 nginx 给上游反代服务器的问题
whileFalse
22 天前
你的意思是这玩意本来就应该报错,只是期望报错 401 实际报错 502 ?
感觉不是大问题,让前端 handle 一下好了。
另外要谨慎使用直接向网站上传大型文件的行为
shinession
22 天前
@ddddjent #6 上游的 nginx 设置这个参数?
ddddjent
22 天前
@shinession 上游是 gin ,不是 nginx ,设置不了
ddddjent
22 天前
@whileFalse 不好意思,我可能说的不是很清楚,我这里的大文件指的是图像数据,大概几 M 左右

我试试看前端咋操作一下
wellerman
22 天前
nginx 的 buffer 小了吧
试试
client_body_buffer_size 20M;
cmhu1023
22 天前
从经验来看,应该 buffer 小了。设置大点
zsj1029
22 天前
采用流式传输,go-gin 的问题,问题不是在 nginx 上感觉
wushenlun
22 天前
gin 发的 fin 或者 rst 导致 ngx502 ,超过 gin 限制了,一般是溢出问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1046608

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX