在Internet上发布Node.JS服务器

问题描述 投票:5回答:3

我有一个Node.JS服务器,可以在localhost上正常工作。现在我希望它可以通过互联网访问,由我的机器托管。我的公共IP地址(Google tells me I have)似乎不是“可访问的”:

https.createServer({
    key: privateKey,
    cert: certificate
}, server).listen(80, '86.151.23.17');

失败,出现以下Node.JS错误:

Error: listen EADDRNOTAVAIL
    at errnoException (net.js:770:11)
    at Server._listen2 (net.js:893:19)
    at listen (net.js:937:10)
    at Server.listen (net.js:994:9)
    at dns.js:71:18
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)

如何将Node.JS服务器发布到我的公共IP地址?

[注意:我没有运行其他网络服务器。此外,我已经尝试了here建议的各种不同的端口。

node.js publish
3个回答
5
投票

您最有可能在路由器后面,因此您的公共IP在路由器本身的任何地方都不可用。您需要做的是监听您的私有IP(通常在192.168。*范围内),并在路由器上设置一个端口。

如果您使用的是Linux,则还需要使用端口> 1024而不是80,这样您就不必以root身份运行节点。设置端口转发时,您只需将端口80转发到运行节点服务器的任何端口即可。


1
投票

您的应用应该监听其他IP地址,例如

app.listen(3000,'0.0.0.0');

要不就

app.listen(3000);

然后,您必须在调制解调器中打开端口转发。喜欢这个http://www.dlink.com/uk/en/support/faq/routers/wireless-routers/dkt-series/how-do-i-open-up-ports-to-my-computer-port-forwarding-on-this-router

最后,你可以在这里的https://whatismyipaddress.com/的IP地址看到你的应用程序


0
投票
const http = require("http");
const hostname = '0.0.0.0';
const port = 80;

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

使用0.0.0.0将开始列入我测试过的公共互联网。

我遇到了ISP给出的路由器拦截默认的80和443端口的情况。即使端口打开了。因此,首先使用8080等端口检查服务器。

并且还将端口转发配置为静态本地地址(ipconfig /假设您的主机为Windows),然后使用主机的MAC地址将该IP地址分配给主机。

为了获得更好的体验,如果您没有静态IP,请使用noip.com动态域名随时访问您的服务器(不知道IP地址)。

© www.soinside.com 2019 - 2024. All rights reserved.