502 Плохой шлюз развертывает hapi.js в AWS Beanstalk?

Я создал очень простое приложение hapi.js со следующим кодом.

var Hapi = require('hapi');
var server = new Hapi.Server(3000);

server.route({
    method: 'GET',
    path: '/',
    handler: function (request, reply) {
        reply('Hello, world!');
    }
});

server.start(function () {
    console.log('Server running at:', server.info.uri);
});

Однако при развертывании я продолжаю получать ошибку «502 Bad Gateway». Я использую стандартный метод zip & upload для развертывания. ZIP-файл содержит файл service.js с приведенным выше кодом и файл package.json, как показано ниже.

{
  "name": "hapi_aws_testing",
  "version": "0.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "hapi": "^6.4.0"
  },
  "engines"        : {
    "node": "0.10.26"
  }
}

Я попытался развернуть с удаленным разделом node.js Engines, а также установил для него значение 0.10.29, а затем понял, что версия node.js, доступная в Beanstalk на образах AMI 1.0.4, была 0.10.26, поэтому изменил ее вот к той версии. Я попробовал это локально, и все работает хорошо.

В журнале ошибок у меня есть следующие два журнала, которые показывают работающий код...

-------------------------------------
/var/log/nodejs/nodejs.log
-------------------------------------
Server running at: http://ip-172-31-3-9:3000

а потом ошибки при попытке зайти на сервер через браузер.

-------------------------------------
/var/log/nginx/error.log
-------------------------------------
2014/08/12 02:07:24 [error] 3457#0: *4 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.13.177, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8081/", host: "consociation-test.elasticbeanstalk.com"
2014/08/12 02:07:26 [error] 3457#0: *4 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.13.177, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8081/", host: "consociation-test.elasticbeanstalk.com"

person Adron    schedule 12.08.2014    source источник


Ответы (2)


Похоже, что ваш сервер прослушивает порт 3000, но, судя по файлу журнала nginx, он настроен на прокси-сервер для приложения узла, прослушивающего порт 8081 (см. часть «upstream:»).

Возможно, вы захотите попробовать использовать переменную среды PORT вместо того, чтобы жестко кодировать ее для любого значения - я почти уверен, что EB предоставляет это вашему приложению. Это гарантирует, что обновления среды выполнения не нарушат вашу настройку.

person robbles    schedule 12.08.2014
comment
Это сделало это! Спасибо за помощь, я, должно быть, столько раз просматривал журналы, что просто не заметил, что я делал неправильно! :) - person Adron; 12.08.2014

Пожалуйста, введите код для прослушивания на доступном порту среды как удар:

var port = process.env.PORT || 3000;
app.listen(port,function(){
      console.log('node server started at ' + port);
    });
person Balu mallisetty    schedule 18.02.2017