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

Posted

技术标签:

【中文标题】“502 Bad Gateway”将 hapi.js 部署到 AWS Beanstalk?【英文标题】:"502 Bad Gateway" deploying hapi.js to AWS Beanstalk? 【发布时间】:2014-10-04 23:42:42 【问题描述】:

我用以下代码构建了一个非常简单的 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,然后意识到 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"

【问题讨论】:

【参考方案1】:

看起来您的服务器正在侦听端口 3000,但从 nginx 日志文件中,它设置为代理到侦听端口 8081 的节点应用程序(请参阅“上游:”部分)。

您可能想尝试使用 PORT 环境变量,而不是将其硬编码为任一值 - 我很确定 EB 会将其公开给您的应用程序。这将确保对运行时的更新不会破坏您的设置。

【讨论】:

做到了!感谢您的帮助,我一定是看了很多次日志,我只是掩盖了我做错了什么! :)【参考方案2】:

请编码在可用的环境端口监听:

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

【讨论】:

以上是关于“502 Bad Gateway”将 hapi.js 部署到 AWS Beanstalk?的主要内容,如果未能解决你的问题,请参考以下文章

502 Bad Gateway

电脑出现502bad gateway怎么解决

打开出现502 Bad gateway怎么解决

502 Bad Gateway 怎么解决?

将 Spring Boot 应用程序部署到 Elastic Beanstalk 时出现 502 Bad Gateway

nginx 502 Bad Gateway 错误解决办法