#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.