为什么无法访问AWS EC2实例上的nodejs应用程序?

问题描述 投票:1回答:1

我目前正在尝试在AWS EC2 Windows Server 2019实例上部署Node js应用程序。我已经完成了克隆git repo并启动我的应用程序的工作,可以在我的EC2实例中访问它。

为了使我的节点应用程序可访问,我使用了Internet信息服务(IIS)管理器,并将该应用程序添加到“默认网站”下。我添加了URL重写模块并添加了入站规则,如下所示:

enter image description here

我可以通过其“公共DNS(IPv4)”访问EC2实例,该实例显示默认的IIS模板:http://ec2-13-58-250-47.us-east-2.compute.amazonaws.com

但是,一旦我在路径中添加诸如“ / app”,“:3000 / app”或“ / app:3000”之类的内容,就会收到“ 500”或“ 404”错误。访问我的应用程序的正确路径是什么?

我尝试过的其他事情:

安全组

我用Google搜索了一下,大多数线程建议检查EC2实例的安全组,这是我所做的。这是我当前的安全组的屏幕截图:

Security Group

端口

我的.env文件不包含PORT,这就是为什么我希望该应用使用硬编码的端口3000。要确保我通过listener.address().port打印了该端口,并使用了3000。

app.js文件如下所示:

const express = require("express")
const path = require("path")
const router = require("./router/auth.routes")
const bodyParser = require("body-parser")
const cookieParser = require("cookie-parser")
const passport = require("passport")
const winston = require('./config/winston')
const { initialiseAuthentication } = require("./auth")
const { connectToDatabase } = require("./database/connection")
require("dotenv").config()

/**
 * App Variables
 */
const app = express()
const port = process.env.PORT || 3000

/**
 * App Configuration
 */
app.use(compression())
app.set("views", path.join(__dirname, "views"))
app.set("view engine", "pug")                         
app.use(express.static(path.join(__dirname, "public")))
app.use(express.json())                                
app.use(bodyParser.urlencoded({ extended: true }))
app.use(cookieParser())
app.use(passport.initialize())                     
initialiseAuthentication(app)

/**
 * Routes Definition
 */
app.use('/', router)

async function establishConnection() {
  await connectToDatabase()
    .then(() => winston.log('info', 'Connection to database established.'))
    .catch(err => {
        winston.log('warn', 'Retrying')       
        setTimeout(establishConnection, 2000)
    })
}

/**
 * Server Activation
 */
app.listen(port, () => {
    establishConnection()
  })

有什么建议吗?我目前一直在这里,因为这是我第一次使用nodejs应用程序设置EC2实例。

express iis amazon-ec2 url-rewrite-module windows-server-2019
1个回答
0
投票

应用程序是否正在监听您的“公共DNS(IPv4)”?为了使该应用程序可访问,它必须准备好侦听通过端口3000或“ http://ec2-13-58-250-47.us-east-2.compute.amazonaws.com:3000”通过您的公用DNS(IPv4)发出的请求。

© www.soinside.com 2019 - 2024. All rights reserved.