Javascript 快递应用服务器。只听所有接口而不是本地主机
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/33953447/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
express app server . listen all interfaces instead of localhost only
提问by Pavel L
I'm very new for this stuff, and trying to make some express app
我对这个东西很陌生,并试图制作一些快速的应用程序
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')
});
When I start the server with the command:
当我使用以下命令启动服务器时:
node server.js
everything goes fine.
一切顺利。
I see on the console
我在控制台看到
listen:3000
and when I try
当我尝试
curl http://localhost:3000
I see 'ok'.
我看到'好的'。
When I try
当我尝试
telnet localhost
I see
我懂了
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'
but when I try
但是当我尝试
netstat -na | grep :3000
I see
我懂了
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN
The question is: why does it listen all interfaces instead of only localhost?
问题是:为什么它会侦听所有接口而不是仅侦听 localhost?
The OS is linux mint 17 without any whistles.
操作系统是 linux mint 17,没有任何口哨声。
回答by Vishnu
If you use don't specify host while calling app.listen
, server will run on all interfaces available i.e on 0.0.0.0
如果您在调用时不指定主机app.listen
,则服务器将在所有可用接口上运行,即0.0.0.0
You can bind the IP address using the following code
您可以使用以下代码绑定IP地址
app.listen(3000, '127.0.0.1');
回答by Julien Le Coupanec
From the documentation: app.listen(port, [hostname], [backlog], [callback])
从文档:app.listen(port, [hostname], [backlog], [callback])
Binds and listens for connections on the specified host and port. This method is identical to Node's http.Server.listen().
绑定并侦听指定主机和端口上的连接。此方法与 Node 的 http.Server.listen() 相同。
var express = require('express');
var app = express();
app.listen(3000, '0.0.0.0');
回答by Thavaprakash Swaminathan
document: app.listen([port[, host[, backlog]]][, callback])
文档: app.listen([port[, host[, backlog]]][, callback])
example:
例子:
const express = require('express');
const app = express();
app.listen('9000','0.0.0.0',()=>{
console.log("server is listening on 9000 port");
})
Note: 0.0.0.0 to be given as host in order to access from outside interface
注意:0.0.0.0 作为主机提供以便从外部接口访问