web-dev-qa-db-fra.com

Comment accéder au serveur NodeJS sur un réseau local?

Je ne suis pas le type le plus expérimenté en matière de réseautage, mais voici ...

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

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

Maintenant, voici la partie étrange; Si j'arrête le service Apache, modifie l'application de mon noeud pour qu'elle écoute sur le port 80 (http) à partir de 1337, il sera accessible sur mon ordinateur en tapant localhost, 192.168.0.3 ou même http://joel-pc dans la barre d'adresse de mon navigateur. Cependant, je ne peux toujours pas accéder à NodeJS sur un autre PC de mon réseau, à part le 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?

12
Joel Murphy

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

9
Peter Lyons

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

server.listen(80, 'current_local_ip');
5
Gonzalo Bahamondez

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 , un utilitaire permettant d’exposer le serveur de nœud local sur Internet. Vous pouvez l'utiliser à des fins de développement, de test et de partage, mais ne l'utilisez pas pour la production.

Vous devez d’abord installer le tunnel local comme suit:

$npm install -g localtunnel

Après cela, configurez votre application de noeud de manière à ce que votre serveur de noeud soit exécuté sur localhost. Pour ex:

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 nœud.

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

$lt --port 3000

Ensuite, 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 la partager avec d'autres également. Tant que votre tunnel local est en cours d'exécution, d'autres peuvent accéder à votre serveur de noeud local.

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

3
k33da_lets_debug

Tout d'abord, vous devez ajouter C:\Program Files (x86)\node à la liste des applications sécurisées de 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 la suite a travaillé 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, puis cliquez sur Modifier les paramètres> Assurez-vous que l'accès privé est coché, puis cliquez sur OK.

2
Thunder