express使用formidable上传文件超时且文件接收不完整?

用nginx+express+formidable上传文件。
文件可以传到服务器,但接收的不完整
浏览器显示的错误信息是502 bad gateway或者time out。
nginx的错误日志提示:

[error] 13964#0: *173180 upstream prematurely closed connection while reading response header from upstream, client: 61.***.**.***, server: ***.***.net, request: "GET /admin/activity/add-item HTTP/1.1", upstream: "http://127.0.0.1:3000/admin/activity/add-item", host: "***.***.net"

express代码:

let formidable = require('formidable');
router.post('/save-act', function(req,res){
    let form = new formidable.IncomingForm();
    form.uploadDir = 'public/upload';                   
    form.keepExtensions = true;                         
    form.maxFieldsSize = 2 * 1024 * 1024;
    form.multiples = true;                              
    form.parse(req,function(err,fields,files){
        if(err) return console.log(err);
        console.log(req.body);
        res.redirect('/admin/activity/add-item');
    });
});

表单(使用pug模板):

form(action="/admin/activity/save-act" method="POST" enctype="multipart/form-data")
        div.form-group
            label 图片
            input(name="file" type="file")
        input.btn.btn-info(type="submit" value="submit")

这些应该没问题,因为我在本地测试正常。

服务器(centos7)端的nginx(1.6.3)配置:

upstream nodejs {
    server 127.0.0.1:3000;
    #server 127.0.0.1:3001;
    keepalive 64;
}
server {
    listen 80;
    server_name ***.***.net;
    access_log /var/log/nginx/test.log;
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host  $http_host;
        proxy_set_header X-Nginx-Proxy true;
        proxy_set_header Connection "";
        proxy_pass      http://nodejs;
    }
}

请求解答,谢谢!

阅读 4.5k
2 个回答

是因为我用了pm2的缘故,改用node命令或nodemon就正常了。
但是pm2该如何设置才能避免这个问题呢?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题