Comment accéder au serveur NodeJS sur LAN?


16

Je ne suis pas le gars le plus compétent en matière de réseautage, mais voilà ...

J'ai créé une application avec NodeJS et j'aimerais tester l'application sur mon LAN avec ma famille. L'application écoute sur le port 1337pour les connexions et je peux accéder à l'application très bien via mon propre PC en tapant localhost:1337, 192.168.0.3:1337ou même http://joel-pc:1337/dans la barre d'adresse de mon navigateur.

Je vais également exécuter apache aux côtés de NodeJS, et je peux accéder à cette amende en tapant 192.168.0.3ou http://joel-pc/dans la barre d'adresse d'un navigateur tant qu'il est connecté au même réseau.

Maintenant, voici la partie bizarre; Si j'arrête le service apache, modifie mon application de noeud pour l'écouter sur le port 80(http) insted 1337, il sera accessible sur mon pc en tapant localhost, 192.168.0.3ou même http://joel-pcdans la barre d'adresse de mon navigateur. Cependant, je ne peux toujours pas accéder à NodeJS sur un autre PC de mon réseau en dehors du mien.

J'ai essayé de créer une règle sortante dans Windows 7 pour autoriser l'accès au port 1337, mais je ne parviens toujours pas à accéder à mon serveur NodeJS sur un autre PC que le mien, même s'il écoute sur le port 80. Y a-t-il quelque chose d'évident Je manque ici?


2
Et si, à titre de test uniquement, vous désactivez votre pare-feu?
cheesemacfly

1
Si j'éteins mon pare-feu, je peux parfaitement accéder au nœud, merci :) Mais il doit sûrement y avoir une manière plus sûre de faire les choses?
Joel Murphy

1
Je l'ai remis maintenant, ne vous inquiétez pas :) Dois-je aussi y poster? Ou existe-t-il un moyen de déplacer ma question? merci
Joel Murphy

2
À votre santé. Je l'ai également signalé parce que j'ai lu dans un autre fil qu'il doit être signalé par 3 utilisateurs avant qu'une action ne soit entreprise par un modérateur
Joel Murphy

2
Le drapeau que j'ai levé a été jugé utile, donc je ne sais pas combien de temps cela peut prendre!
cheesemacfly

Réponses:


11

Il est fort probable que votre application de nœud se lie à l'adresse IP de bouclage 127.0.0.1au lieu de "toutes les IP" 0.0.0.0car il s'agit du comportement par défaut de listen. Spécifiez le port et l'IP dans votre appel comme server.listen(80, '0.0.0.0');et réessayez.


3
Si je le fais, je ne peux toujours pas accéder à Node sur un autre appareil de mon réseau local. Mon code ressemble à ceci: 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
Cela a fonctionné dans mon cas. Sur certains réseaux sans fil localhostfonctionne comme une chaîne, mais dans d'autres, vous devez le taper comme127.0.0.1
Raul Rene

Ceci est incorrect à la lumière de la question telle qu'elle est rédigée actuellement, car elle est en fait accessible sur l'ordinateur local en utilisant l'adresse LAN, ce qui signifie qu'il écoute également sur cette adresse.
Arlen Beiler

6

Obtenez votre IP de réseau local actuelle et exécutez le serveur http comme ceci:

server.listen(80, 'current_local_ip');

1
cela fonctionne pour moi.
psulek

Les documents NodeJS indiquent que si aucune adresse IP n'est spécifiée, il écoutera sur le caractère générique (dans l'ordre: ::ou 0.0.0.0)
Arlen Beiler

3

Tout d'abord, vous devez ajouter C:\Program Files (x86)\nodeà la liste des applications de confiance dans votre pare-feu.

Ensuite, dans votre application de nœud, vous pouvez écrire:

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() {

Chacune de ces 6 combinaisons fonctionne dans mon cas: node.js sur Windows Server 2016, protégé par un proxy d'entreprise.


3

Faire ce qui suit a fonctionné pour moi sur un PC Windows. Essayez ceci: ouvert

Panneau de configuration \ Système et sécurité \ Pare-feu Windows Defender \ Applications autorisées

Recherchez ensuite node.js dans la liste et cliquez sur modifier les paramètres> Assurez-vous que l'accès privé est coché, puis cliquez sur ok.


3

J'ai trouvé une bonne solution à ce problème. Plutôt que de faire toutes les configurations (configuration du pare-feu, port de transfert, etc.), j'ai utilisé localtunnel qui est un utilitaire pour exposer le serveur de nœud local sur Internet. Vous pouvez l'utiliser pour le développement, les tests, le partage, mais ne l'utilisez pas pour la production.

Vous devez d'abord installer localtunnel comme suit:

$npm install -g localtunnel

Après cela, configurez votre application de nœud de sorte que votre serveur de nœud s'exécute sur localhost. Par exemple:

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

Notez votre_port qui dans mon cas était 3000 et démarrez votre serveur de noeud.

Ouvrez un autre terminal et tapez la commande suivante pour exécuter localtunnel.

$lt --port 3000

Après cela, dans le terminal, vous obtiendrez une URL que vous pourrez utiliser à des fins de développement / test. Cette URL sera disponible sur Internet afin que vous puissiez également la partager avec d'autres. Tant que votre tunnel local est en cours d'exécution, d'autres peuvent accéder à votre serveur de nœud local.

Pour plus d'options de configuration / d'aide, vous pouvez consulter la documentation: https://www.npmjs.com/package/localtunnel

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.