Como acessar o servidor NodeJS na LAN?

10

Eu não sou o cara mais experiente com networking, mas aqui vai ...

Eu criei um aplicativo com o NodeJS e gostaria de testar o aplicativo na minha LAN com minha família. O aplicativo atende na porta 1337 para conexões e eu posso acessar o aplicativo bem através do meu próprio PC digitando localhost:1337 , 192.168.0.3:1337 ou mesmo http://joel-pc:1337/ na barra de endereços do meu navegador.

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

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

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

    
por Joel Murphy 11.04.2013 / 20:12

5 respostas

7

O mais provável é que seu aplicativo de nó esteja vinculando ao endereço IP de loopback 127.0.0.1 em vez de "todos os IPs" 0.0.0.0 , já que esse é o comportamento padrão de listen . Especifique a porta e o IP em sua chamada como server.listen(80, '0.0.0.0'); e tente novamente.

    
por 11.04.2013 / 20:20
3

Obtenha seu IP de rede local atual e execute um servidor http como este:

server.listen(80, 'current_local_ip');
    
por 22.02.2014 / 05:58
2

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

Em seguida, no aplicativo do seu 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 seis combinações funciona no meu caso: node.js no Windows Server 2016, protegido por um proxy da empresa.

    
por 09.11.2016 / 11:45
2

Eu 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 localtunnel , que é um utilitário para expor o servidor do nó local pela Internet. Você pode usá-lo para desenvolvimento, teste, compartilhamento de propósito, só não usá-lo para produção.

Primeiro você tem que instalar o localtunnel da seguinte forma:

$npm install -g localtunnel

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

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

Anote your_port que, no meu caso, era 3000 e inicie seu servidor de 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 o seu localtunnel estiver em execução, outros podem acessar o servidor do nó local.

Para mais opções de configuração / ajuda, você pode ler a documentação: link

    
por 15.10.2018 / 07:40
1

Fazer o seguinte funcionou para mim em um PC com Windows. Tente isto: abra

Control Panel\System and Security\Windows Defender Firewall\Allowed apps

Em seguida, procure node.js na lista e clique em change settings > Verifique se o acesso privado está marcado e clique em ok.

    
por 03.05.2018 / 16:26