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 файлът съдържа файл 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 двигатели и също го зададох на 0.10.29 и след това разбрах, че версията на node.js, налична в Beanstalk на 1.0.4 AMI изображения, беше 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