eggjs / egg

🥚 Born to build better enterprise frameworks and apps with Node.js & Koa
https://eggjs.org
MIT License
18.9k stars 1.82k forks source link

用nginx做前置代理,上传文件小于15kb就报504 #4334

Closed jawalkwan closed 4 years ago

jawalkwan commented 4 years ago

就标题描述的……查半天也不知道为啥 1、同一个nginx代理到thinkjs,上传无论大小都正常 2、蛋蛋直接监听80端口,上传无论大小都正常 3、用nginx代理到蛋蛋,上传大于15kb正常,小于15kb,nginx直接返回504,蛋蛋这边的日志啥都没有,我加了中间件、构造函数来查看代码执行到哪了,一个都没打印出来,但nginx那边的日志就显示upstream timed out (110: Connection timed out) while reading response header from upstream我也是没办法了…… 有朋友遇到和我一样的问题的吗?我翻遍了百度和谷歌还有github都没找到和我一样问题的

hyj1991 commented 4 years ago

先问下你用的是 node-v14 么。。。

jawalkwan commented 4 years ago

先问下你用的是 node-v14 么。。。

是的,v14.3.0 就前几天配的环境,顺手用最新的

hyj1991 commented 4 years ago

@delayhsiao v14.x 下 egg-multipart 这个模块使用 file mode 上传文件时存在问题,会 hang 住:,可以参加这个 issue:https://github.com/cojs/busboy/issues/41

本质上是 co-busbody 这个库的 close 事件先于 finish 事件出发导致 await parts 无法结束。你可以试下什么都不改,就把 node runtime 改为 v12.x 看下能不能上传,如果可以的话那就是这个问题引起的了

jawalkwan commented 4 years ago

@delayhsiao v14.x 下 egg-multipart 这个模块使用 file mode 上传文件时存在问题,会 hang 住:,可以参加这个 issue:cojs/busboy#41

本质上是 co-busbody 这个库的 close 事件先于 finish 事件出发导致 await parts 无法结束。你可以试下什么都不改,就把 node runtime 改为 v12.x 看下能不能上传,如果可以的话那就是这个问题引起的了

换成了v12,问题解决了~ 谢谢!果然以后不能用先行版的,稳定版的真香!

FujiBilly commented 1 year ago

@delayhsiao v14.x 下 egg-multipart 这个模块使用 file mode 上传文件时存在问题,会 hang 住:,可以参加这个 issue:cojs/busboy#41

本质上是 co-busbody 这个库的 close 事件先于 finish 事件出发导致 await parts 无法结束。你可以试下什么都不改,就把 node runtime 改为 v12.x 看下能不能上传,如果可以的话那就是这个问题引起的了

请问这个问题除了降node版本外,还有其他修复手段吗?