如何将http服务器与express对象绑定到一个特定的ip地址?

我如何将一个特定的地址绑定到一个http对象? 目前,node.js的默认IP地址是127.0.0.1,我想将其更改为0.0.0.0

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

如何实现?

编辑:我加了0.0.0.0,但默认仍然是127.0.0.1

0.0.0.0不是您可以达到的实际IP。 尽pipe它意味着绑定到所有 IP或任何IP。 所以难怪它适用于127.0.0.1 。 如果您在其中一个networking设备(LAN,WiFi,虚拟)上设置了一个IP地址,它也会监听这些IP地址。


在python中,你可以简单地inputrunserver 0.0.0.0或者其他东西,所以在Node.js中有一个替代scheme吗?

process.argv给你一个传递给节点的参数列表。

所以,如果你跑

 node server.js 0.0.0.0 

你会得到

 process.argv[0] //=> "node" process.argv[1] //=> "server.js" process.argv[2] //=> "0.0.0.0" 

注意它是一个数组,所以只要你确定你会像这样运行你的文件,你可以使用process.argv[2]来指定你想要监听的IP地址。

 http.listen(3000, process.argv[2]); 

一般来说,你应该设置环境variablesIP

 http.listen(3000, process.env[IP]); 

或者全部

 http.listen(3000, process.argv[2] || process.env[IP] || "0.0.0.0");