Ответ 1
Если вы используете не указывать хост при вызове app.listen
, сервер будет работать на всех доступных интерфейсах (0.0.0.0
)
Вы можете привязать IP-адрес, используя следующий код
app.listen(3000, '127.0.0.1');
Я очень новичок в этом деле и пытаюсь сделать какое-то экспресс-приложение
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 без каких-либо свистков.
Если вы используете не указывать хост при вызове app.listen
, сервер будет работать на всех доступных интерфейсах (0.0.0.0
)
Вы можете привязать IP-адрес, используя следующий код
app.listen(3000, '127.0.0.1');
Из документации: app.listen(port, [hostname], [backlog], [callback])
Связывает и прослушивает соединения на указанном хосте и порте. Этот метод идентичен узлам http.Server.listen().
var express = require('express');
var app = express();
app.listen(3000, '0.0.0.0');
документ: 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 будет предоставлено в качестве хоста для доступа из внешнего интерфейса.