我有一个在localhost上运行良好的Node.JS服务器。现在我想从互联网上访问它,托管在我的机器上。我的公网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地址?
[注意:我没有运行另一台not服务器。此外,我已经按照建议的here尝试了各种不同的端口。]
发布于 2013-01-12 20:39:39
您很可能位于路由器后面,因此除了路由器本身之外,您的公网IP在任何地方都不可用。您需要做的是监听您的私有IP (通常在192.168.*范围内),并在您的路由器上设置一个转发端口。
如果您在Linux上,您还需要使用大于1024的端口,而不是80,这样您就不必以root身份运行node。在设置端口转发时,您可以简单地将端口80转发到节点服务器正在运行的任何端口。
发布于 2017-07-05 18:13:49
您的应用程序应侦听其他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地址中看到您的应用程序
发布于 2019-03-09 19:47:04
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等端口检查服务器。
并配置端口转发到静态本地地址(假设您的主机是windows的ipconfig /all ),然后使用主机的MAC地址将该IP地址分配给您的主机。
为了获得更好的体验,如果您没有静态IP,可以随时使用noip.com动态域名访问您的服务器(无需知道IP地址)。
https://stackoverflow.com/questions/14293370
复制相似问题