部署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); });
- AWS EB部署Node应用程序:无法运行npm install
- 密码保护AWS Node EB应用程序
- 在AWS上使用弹性beanstalk部署Nodejs REST API – 错误找不到自定义模块
- 将node.js应用程序部署到Amazon Elastic Beanstalk时出错
- 在Elastic Beanstalk上通过.ebextensions安装git
- Node&Elastic Beanstalk:设置环境NODE_ENV = prod
- 弹性beanstalk中的多个Nodejs应用程序
- 弹性beanstalk上的node.js:firefox 502坏的网关
- AWS Elastic Beanstalk:加载本地模块会导致错误