如何将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中,你可以简单地input
runserver 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");