【问题标题】:how to make a nodeJS http server acessible externally?如何使节点 JS http 服务器可以从外部访问?
【发布时间】:2021-09-25 02:02:45
【问题描述】:

所以,我有一个我在本地测试过的 nodeJS http 服务器,它可以工作。但是当我在外部尝试时,它说“连接超时”

这是我的服务器代码:

const http = require('http');
const requestListener = function (req, res) {
    console.log(req);
    res.writeHead(200);
    res.end('NodeJS server testing.');
}

const server = http.createServer(requestListener);
server.listen(8080, "0.0.0.0", () => {
    console.log("http server listening");
});

我试过输入后显示的 IP 地址:

hostname -I

而且它有效。

$ curl [my-local-hostname]:8080
NodeJS server testing.#

但是IP地址来自

$ curl ifconfig.co

或者,

$ curl ifconfig.me

没用。

$ curl [my-external-hostname]:8080
curl: (28) Failed to connect to 37.111.219.65 port 8080: Connection timed out

我也尝试过其他设备。但它不起作用。 有什么解决办法吗?

【问题讨论】:

  • 您服务器的 8080 端口是否对入站流量开放?
  • 怎么做(不使用很多库?)
  • 这完全取决于您的服务器。如果您使用的是 AWS ec2 实例,请转到该实例的安全组并在入站规则中允许端口 8080 上的流量。

标签: node.js http ip public


【解决方案1】:

防火墙似乎阻止了 8080 端口。尝试打开服务器上的8080端口

【讨论】:

    【解决方案2】:

    您是否尝试让多个节点应用在本地相互连接?

    您是否尝试在不添加端口的情况下访问它,或者尝试将端口从 8080 更改为其他端口,您可能还想尝试使用 localhost ip 地址,例如http://127.0.0.1:8080

    如果它部署在具有静态 ip 的服务器设备上,你是 a) 对端口 8080 上的所有传入连接进行防火墙保护 b) 使用某种 http 服务器来处理传入连接,如 nginx,并带有代理传递?

    【讨论】:

    • 没有。我正在尝试从互联网上获取它。是的,我确实尝试过更改端口。它没有工作
    猜你喜欢
    • 2020-09-16
    • 2013-09-29
    • 1970-01-01
    • 2011-10-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    相关资源
    最近更新 更多