web-dev-qa-db-fra.com

serveur d'application express. écouter toutes les interfaces au lieu de localhost uniquement

Je suis très nouveau pour ce genre de choses et j'essaye de créer une application express

var express = require('express');
var app = express();

app.listen(3000, function(err) {
    if(err){
       console.log(err);
       } else {
       console.log("listen:3000");
    }
});

//something useful
app.get('*', function(req, res) {
  res.status(200).send('ok')
});

Lorsque je démarre le serveur avec la commande:

node server.js 

tout va bien.

Je vois sur la console

listen:3000

et quand j'essaye

curl http://localhost:3000

OK, je vois'.

Quand j'essaye

telnet localhost

Je vois

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]' 

mais quand j'essaye

netstat -na | grep :3000

Je vois

tcp  0  0 0.0.0.0:3000   0.0.0.0:*  LISTEN

La question est: pourquoi écoute-t-il toutes les interfaces au lieu d'uniquement localhost?

L'OS est linux mint 17 sans aucun sifflet.

22
Pavel L

Si vous utilisez, ne spécifiez pas Host lors de l'appel app.listen , le serveur fonctionnera sur toutes les interfaces disponibles (0.0.0.0)

Vous pouvez lier l'adresse IP à l'aide du code suivant

app.listen(3000, '127.0.0.1');
53
Vishnu

De la documentation : app.listen(port, [hostname], [backlog], [callback])

Lie et écoute les connexions sur l'hôte et le port spécifiés. Cette méthode est identique à http.Server.listen () de Node.

var express = require('express');
var app = express();
app.listen(3000, '0.0.0.0');
19

document: app.listen([port[, Host[, backlog]]][, callback])

exemple:

const express = require('express');
const app = express();
app.listen('9000','0.0.0.0',()=>{
      console.log("server is listening on 9000 port");
})

Remarque: 0.0.0.0 doit être donné en tant qu'hôte afin d'accéder à partir de l'interface extérieure

0