Назад | Перейти на главную страницу

Сайт Node.js отказывается от подключения

У меня есть новая установка экземпляра Ubuntu на Amazon EC2. На этом экземпляре есть веб-сервер узла. Когда я пытаюсь перейти на свой веб-сайт, в моем браузере появляется ошибка. Ошибка:

Connect: Connection refused

Я подтвердил, что могу пинговать машину. Но когда я вхожу http://[ipAddress] или http://[ipAddress]:8080 в моем браузере я получаю указанную выше ошибку. Когда я запускаю веб-сервер узла, он говорит:

Server listening on 8080

Я реализовал переадресацию портов с помощью следующей команды:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 
-j REDIRECT --to-port 8080

Я считаю, что правильно открыл брандмауэр, используя следующие команды:

iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Я застрял. Я не знаю, почему я получаю сообщение «В соединении отказано». Я был бы искренне признателен за любую помощь или идеи, которые кто-то может предоставить. На данный момент я не уверен, пришло ли это сообщение от Ubuntu или от сервера Node. Кроме того, я не знаю, как отследить эту проблему.

Спасибо за помощь. Это очень много значит для меня.

У меня была точно такая же проблема с моим приложением ExpressJS, и это не ваше перенаправление. Я долго взламывал iptables и netstat, пока не понял, что моя переменная HOST в моем файле server.js установлена ​​на localhost. Вот мой нерабочий код:

app.listen(PORT, 'localhost', function(err) {
    if (err) return console.log(err);
    console.log("Listening at http://localhost:%s", PORT);
});

Просто добавьте переменную хоста

var HOST = 'actual_server_goes_here...';

А потом сделайте так:

app.listen(PORT, HOST, function(err) {
  if (err) return console.log(err);
  console.log("Listening at http://%s:%s", HOST, PORT);
});

Надеюсь это поможет :)

Ваш сервер, скорее всего, не слушает [ipAddress]:8080 скорее всего, прослушивает только localhost: 8080. Вы можете проверить это, используя netstat Вам нужно будет настроить свой сервер для прослушивания всех / соответствующих IP-адресов. Без сомнения, как это сделать, будет в документации.

Вы хотите заполнить адрес сервера чтобы он прослушивал правильный сетевой интерфейс:

http.createServer(function (req, rsp) () {
    ...
}).listen(serverPort, serverAddress);

Также убедитесь в Amazon EC2, что в консоли управления у вас есть Группа безопасности подключен к вашему экземпляру компьютера, который разрешает доступ к этому порту. (Эти группы безопасности позволяют настроить брандмауэр EC2.)

вам нужно использовать свой ЧАСТНЫЙ IP-адрес, чтобы слушать его. Частный IP-адрес экземпляра (отображается несколько IP-адресов, если к экземпляру подключено более одного сетевого интерфейса). он отображается в консоли управления EC2 для каждого экземпляра