部署hapi.js到AWS Beanstalk的“502 Bad Gateway”?

我用下面的代码构build了一个非常简单的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坏门户”错误部署。 我正在使用标准的zip和上传方法进行部署。 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,然后意识到1.0.4 AMI映像上的Beanstalk中可用的node.js版本为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" 

它看起来像你的服务器正在监听端口3000,但从nginx日志文件,它被设置代理到一个节点应用程序监听端口8081(见“上游:”部分)。

你可能想尝试使用PORT环境variables,而不是硬编码它或者值 – 虽然我很确定EB公开这个给你的应用程序。 这将确保运行时更新不会中断您的设置。

请在可用的环境端口上进行编码听听:

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