Como acessar o servidor NodeJS na LAN?

12

Eu não sou o cara mais experiente de todos os tempos, mas aqui vai ...

Criei um aplicativo com o NodeJS e gostaria de testar o aplicativo na minha LAN com minha família. A aplicação escuta na porta 1337para conexões e eu posso acessar a multa aplicação através do meu próprio PC, digitando localhost:1337, 192.168.0.3:1337ou até mesmo http://joel-pc:1337/na barra de endereços do meu navegador.

Também estarei executando o apache ao lado do NodeJS e posso acessar essa multa digitando 192.168.0.3ou http://joel-pc/na barra de endereços do navegador, desde que esteja conectada à mesma rede.

Agora aqui está a parte estranha; Se eu parar o serviço apache, mudar a minha candidatura nó para escutar na porta 80(http) insted de 1337, será acessível no meu pc, digitando localhost, 192.168.0.3ou até mesmo http://joel-pcna barra de endereços do meu navegador. No entanto, ainda não consigo acessar o NodeJS em nenhum outro PC da minha rede além do meu.

Tentei criar uma regra de saída no Windows 7 para permitir o acesso à porta 1337, mas ainda não consigo acessar o servidor NodeJS em nenhum outro PC que não seja o meu, mesmo que esteja escutando na porta 80. Existe algo óbvio Estou perdendo aqui?

Joel Murphy
fonte
2
E se, apenas como teste, você desligar o firewall?
cheesemacfly
1
Se eu desligar o firewall, posso acessar o nó perfeitamente, obrigado :) Mas certamente deve haver uma maneira mais segura de fazer as coisas?
Joel Murphy
1
Coloquei de volta agora, não se preocupe :) Devo postar lá também? Ou existe uma maneira de mudar minha pergunta? obrigado
Joel Murphy
2
Felicidades. I sinalizada também porque eu li em outro segmento que precisa ser sinalizado por 3 usuários antes de qualquer ação é tomada por um moderador
Joel Murphy
2
A bandeira que levantei foi considerada útil, por isso não sei quanto tempo pode demorar!
cheesemacfly

Respostas:

10

Provavelmente, seu aplicativo de nó está vinculando-se ao endereço IP de auto-retorno em 127.0.0.1vez dos "todos os IPs", 0.0.0.0pois esse é o comportamento padrão de listen. Especifique a porta e o IP na sua chamada server.listen(80, '0.0.0.0');e tente novamente.

Peter Lyons
fonte
3
Se fizer isso, ainda não consigo acessar o Node em nenhum outro dispositivo na minha LAN. Meu código é algo como isto: var io = require ('socket.io'); var express = require ("express"); var app = express (); var server = require ('http'). createServer (app) io = io.listen ('80 ',' 0.0.0.0 ');
Joel Murphy
2
Isso funcionou no meu caso. Em algumas redes sem fio localhostfunciona como uma string, mas em outros você tem que digitá-lo como127.0.0.1
Raul Rene
5

Obtenha seu IP da rede local atual e execute o servidor http assim:

server.listen(80, 'current_local_ip');
Gonzalo Bahamondez
fonte
1
isso funciona para mim.
Psulek
3

Primeiro, você precisa adicionar C:\Program Files (x86)\nodeà lista de aplicativos confiáveis ​​no seu firewall.

Em seguida, no aplicativo do nó, você pode escrever:

listen(3333, '172.24.14.26', function() {

ou:

listen(3333, '0.0.0.0', function() {

ou:

listen(3333, function() {

ou:

listen(80, '172.24.14.26', function() {

ou:

listen(80, '0.0.0.0', function() {

ou:

listen(80, function() {

Cada uma dessas 6 combinações funciona no meu caso: node.js no Windows Server 2016, protegido por um proxy da empresa.

Michael Bernheiden
fonte
3

Encontrei uma boa solução para esse problema. Em vez de fazer todas as configurações (configuração de firewall, porta de encaminhamento etc.), usei o localtunnel, um utilitário para expor o servidor do nó local pela Internet. Você pode usá-lo para desenvolvimento, teste, compartilhamento de propósitos, apenas não o use para produção.

Primeiro você precisa instalar o localtunnel da seguinte maneira:

$npm install -g localtunnel

Depois disso, configure o aplicativo do nó para que o servidor do nó esteja em execução no host local. Por exemplo:

server.listen(3000, function () {
console.log('Listening to port:  ' + port);
});

Anote your_port, que no meu caso era 3000 , e inicie o servidor do nó.

Abra outro terminal e digite o seguinte comando para executar o localtunnel.

$lt --port 3000

Depois disso, no terminal, você receberá uma URL que poderá ser usada para fins de desenvolvimento / teste. Este URL estará disponível na Internet para que você possa compartilhá-lo com outras pessoas também. Enquanto seu túnel local estiver em execução, outras pessoas poderão acessar o servidor do nó local.

Para obter mais opções de configuração / ajuda, consulte a documentação: https://www.npmjs.com/package/localtunnel

k33da_lets_debug
fonte
2

Fazer o seguinte funcionou para mim em um PC com Windows. Experimente o seguinte: open

Painel de controle \ Sistema e segurança \ Firewall do Windows Defender \ Aplicativos permitidos

Em seguida, procure o node.js na lista e clique em alterar configurações> Verifique se o acesso privado está marcado e clique em ok.

Trovão
fonte