用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;
}
}
请求解答,谢谢!
是因为我用了pm2的缘故,改用node命令或nodemon就正常了。
但是pm2该如何设置才能避免这个问题呢?