O site Node.js está recusando conexão

6

Eu tenho uma nova configuração de instância do Ubuntu no Amazon EC2. Esta instância tem um servidor da Web de nó nela. Quando tento acessar meu site, recebo um erro no meu navegador. O erro é:

Connect: Connection refused

Confirmei que posso fazer ping na máquina. No entanto, quando eu digito http://[ipAddress] ou http://[ipAddress]:8080 no meu navegador, recebo o erro acima. Quando inicio o servidor da Web do nó, ele diz:

Server listening on 8080

Eu implementei o encaminhamento de porta usando o seguinte comando:

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

Acredito que abri o firewall apropriadamente usando os seguintes comandos:

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

Estou preso. Eu não sei porque estou recebendo uma "Conexão recusada". Eu sinceramente aprecio qualquer ajuda ou insights que alguém possa fornecer. Neste ponto, não tenho certeza se esta mensagem é proveniente do Ubuntu ou do servidor Node. Além disso, não estou familiarizado com a maneira de rastrear esse problema.

Obrigado pela sua ajuda. Significa muito para mim.

    
por user3284007 21.04.2014 / 17:32

4 respostas

2

O seu servidor provavelmente não está escutando em [ipAddress]:8080 provavelmente só está ouvindo em localhost: 8080. Você pode verificar isso usando netstat Você precisará configurar seu servidor para ouvir em todos os endereços IP apropriados. Não há dúvida de como fazer isso na documentação.

    
por 21.04.2014 / 17:45
1

Você deseja preencher o serverAddress para ouvi-lo na interface de rede correta:

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

Verifique também com o Amazon EC2 que no Console de Gerenciamento você tem um Grupo de Segurança anexado à sua Instância do Computador que permite acesso a essa porta. (Esses grupos de segurança permitem que você configure o firewall do EC2.)

    
por 08.06.2014 / 12:09
1

Eu tive exatamente o mesmo problema com meu aplicativo ExpressJS, e não é o seu redirecionamento. Eu hackeei o iptables e o netstat por um longo tempo até perceber que tinha minha variável HOST no meu arquivo server.js definido como localhost . Aqui estava o meu código não funcional:

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

Basta adicionar uma variável do host

var HOST = 'actual_server_goes_here...';

E então faça isso:

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

Espero que isso ajude:)

    
por 19.10.2016 / 17:35
0

você precisa usar seu IP privado para ouvi-lo. O endereço IP privado da instância (vários endereços IP são listados se houver mais de uma interface de rede para a instância). é mostrado no console de gerenciamento do EC2, por instância

    
por 25.02.2016 / 11:26