【问题标题】:NodeJs App in AWS using port 3000 is not accessible from Internet无法从 Internet 访问 AWS 中使用端口 3000 的 NodeJs 应用程序
【发布时间】:2017-08-11 07:53:14
【问题描述】:

我正在使用免费套餐 AWS Linux 实例,我已经安装了 NodeJs 并启动了我的 Express JS 应用程序 (sudo node bin/www),我的应用程序在端口 3000 上运行。

当我 ssh 到实例并执行 cURL 时,我的应用正在响应,但不是来自使用实例公共 IP 的 Chrome。

我在Security Groups 中添加了端口 80、22、3000,以便从任何地方访问应用程序。 [附截图] 实例正在N. Virginia region 中运行。

以下是我试图让它发挥作用的案例:

  • 使用 Public IP 和端口 3000 启动我的应用程序
  • 使用 Private IP 和端口 3000 启动我的应用程序
  • 使用 0.0.0.0 和端口 3000 启动我的应用程序
  • 使用 localhost 和端口 3000 启动我的应用程序

上述所有情况都失败了,当我 ssh 到实例并执行 cURL 时,我的应用程序正在响应。

有人能给我更多的见解吗? or我错过了任何东西。我已经被这个阻止了。

当我将端口设置为80 时,我可以访问应用程序,但我需要使用端口3000,因为我在端口80 上运行前端框架。

使用 yum 在服务器上安装软件:

  • 百胜更新
  • gcc-c++ 制作
  • openssl 开发
  • nodejs来自官网
  • npm install -g npm //更新npm
  • mongodb

AWS Security Group Screenshot

P.S:我已阅读有关无法从 Internet 访问的应用程序的所有 StackOverflow 问题,但就我而言,我的应用程序可从端口 80 而非 3000 访问。

【问题讨论】:

  • 您的安全组看起来正确,但它还应该指定组的类型?你在任何地方都能看到打字吗?您也可以发布用于启动节点服务器的代码。问题也可能存在
  • @Hammer 是的,我已将Security group 中端口3000 的类型设置为任何地方。启动应用代码:sudo node bin/www
  • 抱歉让我澄清一下,我的意思是您运行的文件中设置服务器的实际代码
  • @Hammer,我正在使用Express JS,我已经使用express generator 命令开发了我的应用程序:npm install express-generator -g 有标准的www 文件来运行应用程序,我只是更改了var port = normalizePort('3000');如果您需要更多信息,请告诉我。
  • 你允许 CORS/origions 吗? var allowedOrigins = [config.allowedOrigins] res.header('Access-Control-Allow-Origin', allowedOrigins);

标签: node.js amazon-web-services express amazon-ec2


【解决方案1】:

这可能是因为您试图从阻止了端口 3000 上的出站连接的网络访问您的应用程序。大多数企业网络只允许某些特定类型的流量离开网络,通常是 http(s) 等。 尝试从另一个网络或不同区域内的 ec2 主机对其进行测试。

【讨论】:

  • 假设我有一个 AWS 实例,我必须在 Port 80 中运行我的前端框架,在 Port 3000 中运行我的后端框架,我该如何解决这个问题?如何让企业网络中的用户也可以不间断地访问我的应用程序?
  • @Rohith 你可能需要一个反向代理。例如,您将在端口 4000 上运行前端,在端口 3000 上运行后端。在端口 80 上,您设置一个反向代理(apache 或 nginx)并将其配置为根据 url 将请求转发到端口 3000 和 4000,例如所有从 /api 开始到后​​端,其他的都到前端。
  • 感谢您的信息。实际上,我也是这样做的。
【解决方案2】:

在这上面浪费了 3 天。您需要禁用内部防火墙。我在 centos 7 上:

sudo systemctl 禁用防火墙 sudo systemctl stop firewalld

【讨论】:

    【解决方案3】:

    您是否允许 CORS/原点?

    var allowedOrigins = [origionDomain] 
    res.header('Access-Control-Allow-Origin', allowedOrigins)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 2012-09-17
      • 2016-04-01
      • 2011-09-18
      • 2021-12-07
      • 1970-01-01
      相关资源
      最近更新 更多