экспресс-сервер приложений. слушать все интерфейсы вместо только localhost

Я очень новичок в этом деле и пытаюсь сделать какое-то экспресс-приложение

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')
});

Когда я запускаю сервер с командой:

node server.js 

все идет хорошо

Я вижу на консоли

listen:3000

и когда я пытаюсь

curl http://localhost:3000

Я вижу "хорошо".

Когда я пытаюсь

telnet localhost

я вижу

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

но когда я пытаюсь

netstat -na | grep :3000

я вижу

tcp  0  0 0.0.0.0:3000   0.0.0.0:*  LISTEN

Вопрос в том, почему он слушает все интерфейсы, а не только localhost?

ОС linux mint 17 без каких-либо свистков.

Ответ 1

Если вы используете не указывать хост при вызове app.listen, сервер будет работать на всех доступных интерфейсах (0.0.0.0)

Вы можете привязать IP-адрес, используя следующий код

app.listen(3000, '127.0.0.1');

Ответ 2

Из документации: app.listen(port, [hostname], [backlog], [callback])

Связывает и прослушивает соединения на указанном хосте и порте. Этот метод идентичен узлам http.Server.listen().

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

Ответ 3

документ: app.listen([port[, host[, backlog]]][, callback])

Пример:

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

Примечание: 0.0.0.0 будет предоставлено в качестве хоста для доступа из внешнего интерфейса.