【问题标题】:node.js server.listen on a specific IP address EADDRNOTAVAILnode.js server.listen 在特定 IP 地址 EADDRNOTAVAIL
【发布时间】:2015-09-17 15:15:31
【问题描述】:

当我尝试侦听特定 IP 地址时,我收到错误消息。

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8080, "10.211.56.1");

console.log('Server running at http://10.211.56.1:8080/');

我收到以下错误:

➜  node-test  sudo node server.js
Server running at http://10.211.56.1:8080/
events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: listen EADDRNOTAVAIL
    at exports._errnoException (util.js:746:11)
    at Server._listen2 (net.js:1139:19)
    at listen (net.js:1182:10)
    at net.js:1280:9
    at dns.js:85:18
    at process._tickCallback (node.js:355:11)
    at Function.Module.runMain (module.js:503:11)
    at startup (node.js:129:16)
    at node.js:814:3

【问题讨论】:

    标签: node.js


    【解决方案1】:

    这基本上意味着您使用的 ip/port 组合对您的服务器不可用。这可能是因为该端口已在使用中,或者该 IP 地址不是您的服务器正在使用的地址。

    您应该改用localhost:someport0.0.0.0:someport,其中someport 是当前未使用的端口。

    【讨论】:

    • 谢谢。如何使 IP 地址可用?我想要做的是在我的主机文件中设置一个条目,这样我就可以有一个应用程序的 url,而 localhost 不是一个选项。
    • 该 IP 地址必须由您的网络提供给您。在任何一种情况下,您都应该在大多数情况下使用0.0.0.0,除非您的服务器有多个 IP 地址。
    • 我想要完成的是我试图在本地运行 2 个应用程序进行测试。 app1.test.dev 和 app2.test.dev。此外,我有一些应用程序在特定端口上的 localhost 上运行。您还有其他建议吗?
    • 并非如此。通常在运行多个应用程序时,唯一真正的选择是使用多个端口。如果您想在端口 80 上运行多个应用程序,您可以放置​​一个能够执行反向代理的网络服务器(例如 iis nginx 或 apache),它将代理 domain.com:80 到您的 localhost:7352,从而允许您运行许多应用程序使用相同的 IP 地址和端口 80 朝外。当然,您仍然需要将该域路由到您网络中的服务器。
    • 好的。知道了。我将设置一个反向代理。谢谢。
    猜你喜欢
    • 2011-07-28
    • 2014-06-10
    • 2011-04-08
    • 2015-01-04
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2016-11-27
    相关资源
    最近更新 更多