Невозможно найти соединение с node.js, работающим на сервере Red Hat - PullRequest
0 голосов
/ 03 июля 2018

У меня есть сервер Red Hat, на котором находится мое приложение node.js. По умолчанию приложение должно работать на порте, который пользователь настроил ИЛИ на 8080

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

Когда я вхожу на сервер Red Hat через ssh>, захожу в каталог приложения узла и запускаю

node app.js

Я получаю

информация: сервер запущен

Итак, приложение работает правильно. Однако, когда я иду в приложение URL

server_ip_address: 8080 (пример - 104.37.188.221:8080) он не подключается и время ожидания подключения истекает.

Я не настроил никакую переменную среды для порта, поэтому порт будет 8080. Я предполагаю, что если на этом порту запущена какая-либо другая служба, приложение не запустится, но это не так.

Есть идеи, что происходит? Как мне отладить эту проблему?

Спасибо.

1 Ответ

0 голосов
/ 03 июля 2018

Вы должны напечатать порт прослушивания в журнале, который поможет вам отладить

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});
});
...