【问题标题】:NodeJs Application on Aws Ubuntu is running on ipv6Aws Ubuntu 上的 NodeJs 应用程序在 ipv6 上运行
【发布时间】:2017-04-09 10:58:54
【问题描述】:

在 AWS ubuntu 16.04 上使用 express 应用程序运行 nodejs 时,它在 tcp6 上运行,因此,我无法访问我的应用程序。 见下面的截图。

在创建服务器时添加 IP 地址后,出现以下错误。

我是linux新手,不知道怎么解决。请提出建议。

【问题讨论】:

  • 您是否在 AWS 控制台中公开了 1234 端口?
  • 是的,我做到了,尽管我现在允许所有流量。 @iKoala
  • 实际上我在您的屏幕截图中没有看到任何问题,您可能需要提供更多信息,然后才能帮助您。你可以访问端口并在本地获取数据吗?您可能想尝试使用高于 3000 的端口,因为某些系统和防火墙默认会阻止所有低于 3000 的端口(为系统保留)。
  • 这是一台 aws linux 机器,所以只有我可以使用我机器上的 putty 访问它。我应该添加什么其他内容以便您了解根本原因。
  • 用本地主机访问端口会得到什么?

标签: node.js linux amazon-web-services ubuntu express


【解决方案1】:

您需要在 Node.js 中显式提供要绑定的 IP,否则它会绑定到 IPv6。记录在这里:https://nodejs.org/dist/latest-v6.x/docs/api/http.html#http_server_listen_port_hostname_backlog_callback

在你的代码中的某个地方你应该有类似这样的东西:

var app = express();
app.listen(1234);

改成:

var app = express();
app.listen(1234, '127.0.0.1');

【讨论】:

  • @JitendraPancholi 用一个例子扩展了答案。
  • 它也不适合我。 pm2 日志显示“服务器在端口:8080 上启动”但无法从外部访问。
  • @JitendraPancholi 如果您想从外部使用它,那么您需要将 127.0.0.1 替换为您机器的公共 v4 IP。
  • 错误:在 Object.exports._errnoException (util.js:1026:11) 处侦听 EACCES 0.0.0.0:1022 在 Server._listen2 ( net.js:1244:19) 在听 (net.js:1293:10) 在 Server.listen (net.js:1389:5) 在 Function.app.listen (/home/ubuntu/consumerforum/node_modules/express/ lib/application.js:556:24) 在 Object. (/home/ubuntu/consumerforum/app.js:127:5) 在 Module._compile (module.js:570:32) 在 Object.Module。 _extensions..js (module.js:579:10) 在 Module.load (module.js:487:32)
  • 我尝试了许多其他端口,但与图像和错误日志中显示的问题相同。
猜你喜欢
  • 2017-05-18
  • 2021-08-03
  • 2021-08-05
  • 2013-01-29
  • 2018-02-19
  • 1970-01-01
  • 2019-06-28
  • 2021-09-10
  • 1970-01-01
相关资源
最近更新 更多