找不到与运行在Red Hat服务器上的node.js的连接

时间:2018-07-03 08:18:03

标签: node.js linux redhat

我的node.js应用程序驻留在Red Hat服务器上。默认情况下,该应用程序可以在用户已设置的端口上运行,也可以在8080上运行

app.set('port', process.env.PORT || 8080);
http.createServer(app).listen(app.get('port'), function(){
    winston.log('info', 'The server has started');
});

当我通过ssh登录到Red Hat服务器时>进入节点应用目录并运行

node app.js

我明白了

  

信息:服务器已启动

因此应用程序正常运行。但是,当我转到应用程序网址

server_ip_address:8080(例如-104.37.188.221:8080),它没有连接,连接最终超时。

我没有为端口设置任何环境变量,因此该端口将为8080。我假设如果该端口上正在运行任何其他服务,则它不会让该应用程序运行,但事实并非如此。

知道发生了什么吗?如何调试此问题?

谢谢。

1 个答案:

答案 0 :(得分:0)

您应该在日志中打印侦听端口,以帮助您调试

app.set('port', process.env.PORT || 8080);
const server = http.createServer(app);
server.listen(app.get('port'), function(){
    winston.log('info', 'The server has started on port ' + server.address().port);
});

并确保您已打开端口(如果启用了防火墙)

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

更新

您可能想在所有路由的末尾添加错误处理程序,例如

// error handler
app.use(function(err, req, res, next) {
  res.status(err.status || 500).json({ error: err});
});