Почему я не могу получить доступ к приложению nodejs в экземпляре AWS EC2? - PullRequest
2 голосов
/ 08 апреля 2020

В настоящее время я пытаюсь развернуть приложение node js на экземпляре AWS EC2 Windows Server 2019. Я завершил клонирование моего репозитория git и запустил свое приложение, и могу получить к нему доступ в своем экземпляре EC2.

Чтобы сделать приложение моего узла доступным, я использовал диспетчер Inte rnet Information Services (IIS) и добавили приложение на веб-сайте по умолчанию. Я добавил модуль перезаписи URL и добавил правило для входящих сообщений, например:

enter image description here

Я могу получить доступ к экземпляру EC2 через его "Publi c DNS ( IPv4) ", который показывает шаблон IIS по умолчанию: http://ec2-13-58-250-47.us-east-2.compute.amazonaws.com

Но как только я добавлю что-то в путь, например" / app ",": 3000 / app "или "/ app: 3000" Я получил ошибки "500" или "404". Какой будет правильный путь для доступа к моему приложению?

Другие вещи, которые я пробовал:

Группы безопасности

Я немного погуглил, и большинство потоков предлагают проверить группу безопасности для экземпляра EC2, который что я наделал. Вот скриншот моей текущей группы безопасности:

Security Group

Порт

Мой файл .env не содержат порт, поэтому я ожидаю, что приложение будет использовать жестко заданный порт 3000. Чтобы убедиться, что я напечатал порт через listener.address().port, и он использует 3000.

Приложение. 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()
  })

Есть предложения? В настоящее время я застрял здесь, поскольку я впервые настраиваю экземпляр EC2 и приложение nodejs.

1 Ответ

0 голосов
/ 13 апреля 2020

Приложение слушает ваш "Publi c DNS (IPv4)"? Чтобы приложение было доступно, оно должно быть готово прослушивать запросы, поступающие через ваш Publi c DNS (IPv4) через порт 3000 или "http://ec2-13-58-250-47.us-east-2.compute.amazonaws.com: 3000 ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...