【问题标题】:Listen to multiple hosts with http server on node.js在 node.js 上使用 http 服务器监听多个主机
【发布时间】:2014-02-06 22:12:33
【问题描述】:

According to the docs,创建服务器可以选择监听特定主机:

server.listen(port, [host], [backlog], [callback])

开始接受指定porthost 上的连接。如果省略host,服务器将接受定向到任何 IPv4 地址 (INADDR_ANY) 的连接。

因此您可以收听单个主机或任何主机。

有没有办法监听一些特定的主机?

【问题讨论】:

  • 或者您可以检查req.headers.host 并回复 404,但您想回复的人除外。
  • @adeneo 您的提议假设在其他接口上没有其他需要他的端口。在某些情况下,您提出的建议也存在一些安全问题。处理 TCP 连接和如何在应用层处理请求是完全不同的问题。

标签: node.js host listen


【解决方案1】:

为此,您必须添加额外的 HTTP 服务器。但是,您可以为每个回调使用相同的回调。

如果您使用 Express,这就像额外调用 app.listen() 一样简单。

【讨论】:

  • 啊,同样的回调,太好了。我可以遍历一组主机并将回调附加到每个主机。
  • 注意:这需要为每个主机使用不同的端口,否则你会得到一个 EADDRINUSE 错误
  • @caseyWebb 这不是真的。您可以在不同的主机/地址上侦听同一端口。
  • 您能举个例子吗?我刚试过这个(hosts.forEach((host) => app.listen(port, host))),它抛出了上述错误。
  • @caseyWebb 发布一个新问题,并在其中列出您的主机。在这里放一个链接,我去看看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 2018-05-27
  • 2016-07-07
  • 2013-02-02
  • 1970-01-01
  • 2019-08-08
  • 2016-07-20
相关资源
最近更新 更多