web-dev-qa-db-ja.com

エクスプレスアプリサーバー。ローカルホストのみではなく、すべてのインターフェイスをリッスンします

私はこのようなものについては非常に新しく、いくつかのエクスプレスアプリを作成しようとしています

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

「OK」が表示されます。

しようとすると

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

問題は、なぜローカルホストだけではなく、すべてのインターフェイスをリッスンするのですか?

OSは、なしのlinux mint 17です。

22
Pavel L

使用する場合は、 app.listen 、利用可能なすべてのインターフェイスでサーバーが実行されます(0.0.0.0

次のコードを使用してIPアドレスをバインドできます

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

ドキュメントからapp.listen(port, [hostname], [backlog], [callback])

指定されたホストとポートで接続をバインドしてリッスンします。このメソッドは、ノードのhttp.Server.listen()と同じです。

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

ドキュメント: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