Я загружаю базовое приложение узла в aws elastic beanstalk, и я получаю 502 неверных ответа шлюза, когда я иду в среду

#node.js #amazon-elastic-beanstalk

#node.js #amazon-elastic-beanstalk

Вопрос:

Я загрузил следующий файл с именем server.js:

 var express = require('express');
var app = express();

app.get('/', function (req, res) {
    console.log('Send message on get request');
    res.send('Hello full-stack development!');
});

app.set('port', process.env.port || 3000);

var server = app.listen(app.get('port'), function () {
    console.log('Express server listening on port:'   
    server.address().port);
}); 
 

вместе со следующим файлом package.json:

 {
    "name": "newswatcher",
    "version": "0.0.0",
    "description": "NewsWatcher",
    "main": "server.js",
    "author": {
        "name": "myname",
        "email": "myemail"
    },
    "scripts": {
        "start": "node server.js"
    },
    "dependencies": {
        "express": "4.17.1"
    }
}
 

и package-lock.json и модулям npm.
Я выполнил основные шаги по созданию приложения aws, а затем загрузил и развернул zip-файл с четырьмя файлами, которые я упомянул, и установил для переменной среды NPM_CONFIG_PRODUCTION значение true. Затем, когда я захожу в среду, я получаю ошибку 502 bad gateway.

Он отлично работает, когда я запускаю его локально с помощью npm start.

Это из журналов, из-за которых кажется, что оно работает:


/var/log/web.stdout.log


10 января 01:46:27 ip-172-31-13-23 веб: > newswatcher@0.0.0 start / var / app / текущий

10 января 01:46:27 ip-172-31-13-23 веб: > узел server.js

10 января 01:46:27 ip-172-31-13-23 веб: Экспресс-сервер прослушивает порт: 3000

10 января 01:49:59 ip-172-31-13-23 веб: > Elastic-Beanstalk-Sample-App@0.0.1 start / var / app / текущий

10 января 01:49:59 ip-172-31-13-23 веб: > узел app.js

10 января 01:49:59 ip-172-31-13-23 веб: Сервер, работающий по адресу http://127.0.0.1:8080 /

10 января 01:58:11 ip-172-31-13-23 веб: > newswatcher@0.0.0 start / var / app / текущий

10 января 01:58:11 ip-172-31-13-23 веб: > узел server.js

10 января 01:58:11 ip-172-31-13-23 веб: Экспресс-сервер прослушивает порт: 3000

Это из журналов ошибок:

2021/01/10 02:24:23 [ошибка] 4619 # 0: * 431 сбой подключения () (111: отказ в подключении) при подключении к восходящему потоку, клиент: 172.31.24.137, сервер: , запрос: «GET / HTTP / 1.1», восходящий поток: «http://127.0.0.1:8080 /», хост: «172.31.13.23»

2021/01/10 02:24:23 [ошибка] 4619 # 0: * 433 сбой подключения () (111: отказ в подключении) при подключении к восходящему потоку, клиент: 172.31.10.27, сервер: , запрос: «GET / HTTP / 1.1», восходящий поток: «http://127.0.0.1:8080 /», хост: «172.31.13.23»

Это продолжается и продолжается вот так.

Что не так?

Комментарии:

1. Ваши журналы показывают, что express находится на порту 3000, но nginx ожидает 8080.

2. спасибо, я думал, что aws автоматически синхронизирует их. У меня установлен порт приложения на process.env.port и 3000, если он не установлен. Был ли process.env.port не определен тогда?

3. Нет, вам решать, как его настроить. Удалось ли вам изменить свои порты и сработало ли это?

4. Да, я изменил порт в server.js до 3000 и все переделал

5. Рад это слышать. Если вы не возражаете, я предоставлю ответ для дальнейшего использования.

Ответ №1:

На основе комментариев.

Проблема была вызвана тем фактом, что экспресс был заблокирован на порту 3000, но nginx ожидал порт 8080.Решение состояло в том, чтобы использовать порт 3000 для nginx.