如何将http服务器与快速对象绑定到特定的IP地址?

air*_*eak 2 node.js express

如何将特定地址绑定到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");
Run Code Online (Sandbox Code Playgroud)

怎么实现呢?

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

lag*_*lex 6

0.0.0.0不是您可以达到的实际IP.虽然它意味着绑定到所有 IP或任何IP.所以难怪它适用于127.0.0.1.如果您在其中一个网络设备(LAN,WiFi,虚拟设备)上设置了IP地址,那么它也会收听.


在python中你可以简单地键入runserver 0.0.0.0或者什么,所以在Node.js中有替代方案吗?

process.argv 为您提供传递给节点的参数列表.

所以,如果你跑

node server.js 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

你会得到

process.argv[0] //=> "node" 
process.argv[1] //=> "server.js" 
process.argv[2] //=> "0.0.0.0" 
Run Code Online (Sandbox Code Playgroud)

请注意,它是一个数组,因此只要您确定将运行您的文件,您可以使用它process.argv[2]来指定您想要侦听的IP地址.

http.listen(3000, process.argv[2]);
Run Code Online (Sandbox Code Playgroud)

但一般来说,您应该设置环境变量IP.

http.listen(3000, process.env[IP]);
Run Code Online (Sandbox Code Playgroud)

或者全部

http.listen(3000, process.argv[2] || process.env[IP] || "0.0.0.0");
Run Code Online (Sandbox Code Playgroud)