【问题标题】:Custom Port not working for node.js app on AWS EC2 instance自定义端口不适用于 AWS EC2 实例上的 node.js 应用程序
【发布时间】:2017-12-27 12:05:26
【问题描述】:

我在我的 AWS EC2 实例上部署了以下代码 -

const express = require('express')
const app = express()
app.get('/test',(req,res) => {res.send('Hi')})

app.listen(3001, () => console.log('Server running on port 80'))

当我尝试访问以下网址 - http://ec2-13-59-209-0.us-east-2.compute.amazonaws.com/test 时,我收到连接被拒绝的消息。 UI 上的消息是 ec2-13-59-209-0.us-east-2.compute.amazonaws.com 拒绝连接。

我确实浏览了文档并设置了安全组来监听端口 3001。但这也没有帮助。所以我启用了所有端口的流量。我仍然无法连接。请在下面找到安全组的快照。如果您能帮我解决这个问题,那就太好了。

【问题讨论】:

  • 默认情况下它在端口 80 上运行,因此您必须使用反向代理或 ip 表作为 sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-端口 3001
  • 我认为安全组可以帮助解决这种情况。此外,我试图在不同的端口上运行不同的 nodejs 文件,从而让它们表现为单独的微服务。如果我将端口 80 上的所有请求重定向到端口 3001,那并不能解决我的问题。
  • @rxysm 如果您查看代码,它显然在端口 3001 上运行,而不是端口 80。这里不需要 iptables 路由规则。
  • @user3276247 安全组无法帮助解决这种情况。安全组只是阻止/允许流量,它们不会转发到不同的端口。然而,这不是这里的问题。

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


【解决方案1】:

您需要告诉 Express 监听所有流量,而不仅仅是 localhost 流量。将您的 app.listen 行更改为:

app.listen(3001, "0.0.0.0");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 2016-09-20
    • 1970-01-01
    • 2016-11-28
    • 2022-06-21
    • 1970-01-01
    • 2020-05-25
    相关资源
    最近更新 更多