【问题标题】:Nodejs on linux not accessible outside Serverlinux上的Nodejs无法在服务器外部访问
【发布时间】:2020-07-06 13:35:42
【问题描述】:

什么都试过了... 端口 8008 似乎是开放的,但没有运气。 netstat 显示 8008 正在监听

我可以 curl localhost:8008 但不能使用我的服务器的 IP 地址从外部计算机

是的,我想在端口 8008 上托管我的 nodejs(不是 8080 - 我使用 8080 做其他事情)

netstat 输出:

tcp 0 0 0.0.0.0:8008 0.0.0.0:* 听

【问题讨论】:

  • 从您的 netstat 行看来,您的 node.js 服务器运行正常。你检查过你的防火墙吗? sudo iptables -L 报告什么?
  • 另外,这是什么服务器?在 AWS 等服务上,您必须使用网站设置另一层防火墙
  • @jj-23,我在 Oracle 云服务器上遇到了完全相同的问题。我找不到在哪里完全禁用 oracle 服务器本身的防火墙设置。你能指出我正确的方向吗?
  • @AmberElferink 我在防火墙中添加了一条规则,以允许您必须登录到 Oracle 云仪表板 (cloud.oracle.com) 的端口的流量,然后转到网络 > 虚拟云网络:选择您的服务器尝试更新转到公共子网,然后选择您正在使用的安全性,然后添加一个入口规则,指定您要打开的端口
  • 谢谢@jj-23,我昨晚才知道怎么做。同样的想法,但我做的有点不同(对于未来的人来说)。我去了 Compute > Instances 并单击了我的实例名称。然后在大概览中,单击子网,并在那里添加入口规则。我现在有一个更清晰的指南:stackoverflow.com/questions/66146781/…

标签: node.js linux


【解决方案1】:

您是否尝试过更改您的端口

var port = process.env.PORT || 8008;   //server.listen(3000, '0.0.0.0');
app.listen(port, 0.0.0.0, function() {
  console.log("Listening on " + port);
});

如果你有.env 插入值PORT=8008

然后运行你的服务器

【讨论】:

  • 当我使用服务器的公共 ip 时出现此错误:错误:监听 EADDRNOTAVAIL:地址不可用 XXX.XX.XX.XXX:8008 在 Server.setupListenHandle [as _listen2] (net.js: 1296:21) 在listenInCluster (net.js:1361:12)
  • 现在更新了我的答案检查。
  • 谢谢。我认为你的意思是'0.0.0.0' - 我试过“app.listen(port,'0.0.0.0',()=> {...”但仍然没有运气。如果我使用端口8080,nodejs似乎可以工作
  • 没有错误。该应用程序从端口 8008 开始正常。我可以在服务器内部执行 curl localhost:8008。但是当我在服务器外部访问应用程序时,连接超时
  • 您是从同一个网络或外部网络访问应用程序?
猜你喜欢
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-03
  • 2023-03-22
  • 1970-01-01
  • 2019-02-02
相关资源
最近更新 更多