【问题标题】:How to bind http server with express object to a specific ip address?如何将带有 express 对象的 http 服务器绑定到特定的 IP 地址?
【发布时间】:2015-04-02 11:51:58
【问题描述】:

如何将特定地址绑定到 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

【问题讨论】:

  • @victorkohl 我找到了那个帖子,但链接没有帮助,我是 node.js 的新手
  • 那你是怎么做的?您问题中的代码没有将 IP 传递给 listen 函数。
  • 我尝试将“0.0.0.0”作为第二个参数传递给http.listen(),但它不起作用,ip地址仍然设置为127.0.0.1

标签: node.js express


【解决方案1】:

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

你会得到

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]);

一般情况下,您应该设置环境变量IP

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

或者全部

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

【讨论】:

  • 在python中你可以简单地输入0.0.0.0 runserver什么的,所以在node.js中没有解决方案?
  • 没有内置的方法可以通过命令行参数告诉 Node 监听哪个 IP,如果这就是你的意思,不。您可以使用process.argv 对其进行编程。
  • 那我怎么把它放到server.js中呢?您是否愿意展示一些代码以便我可以接受这个答案
  • http.listen(3000, process.argv[2])
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-16
  • 1970-01-01
  • 2021-01-20
  • 2011-11-02
  • 2011-06-19
  • 2012-03-14
相关资源
最近更新 更多