首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在internet上发布Node.JS服务器

问在internet上发布Node.JS服务器
EN

Stack Overflow用户
提问于 2013-01-12 20:36:10
回答 3查看 19.8K关注 0票数 9

我有一个在localhost上运行良好的Node.JS服务器。现在我想从互联网上访问它,托管在我的机器上。我的公网IP地址(Google tells me I have的那个)似乎无法“访问”:

代码语言:javascript
复制
https.createServer({
    key: privateKey,
    cert: certificate
}, server).listen(80, '86.151.23.17');

失败,并显示以下Node.JS错误:

代码语言:javascript
复制
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尝试了各种不同的端口。]

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-12 20:39:39

您很可能位于路由器后面,因此除了路由器本身之外,您的公网IP在任何地方都不可用。您需要做的是监听您的私有IP (通常在192.168.*范围内),并在您的路由器上设置一个转发端口。

如果您在Linux上,您还需要使用大于1024的端口,而不是80,这样您就不必以root身份运行node。在设置端口转发时,您可以简单地将端口80转发到节点服务器正在运行的任何端口。

票数 12
EN

Stack Overflow用户

发布于 2017-07-05 18:13:49

您的应用程序应侦听其他ip地址,例如

代码语言:javascript
复制
app.listen(3000,'0.0.0.0');

或者只是

代码语言:javascript
复制
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地址中看到您的应用程序

票数 2
EN

Stack Overflow用户

发布于 2019-03-09 19:47:04

代码语言:javascript
复制
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地址)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14293370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档