【问题标题】:I am uploading a basic node application to aws elastic beanstalk and i am getting a 502 bad gateway response when I go to the environment我正在将基本节点应用程序上传到 aws elastic beanstalk,当我进入环境时收到 502 bad gateway 响应
【发布时间】:2021-04-15 09:09:56
【问题描述】:

我上传了以下名为 server.js 的文件:

var express = require('express');
var app = express();

app.get('/', function (req, res) {
    console.log('Send message on get request');
    res.send('Hello full-stack development!');
});

app.set('port', process.env.port || 3000);

var server = app.listen(app.get('port'), function () {
    console.log('Express server listening on port:' + 
    server.address().port);
}); 

连同以下 package.json 文件:

{
    "name": "newswatcher",
    "version": "0.0.0",
    "description": "NewsWatcher",
    "main": "server.js",
    "author": {
        "name": "myname",
        "email": "myemail"
    },
    "scripts": {
        "start": "node server.js"
    },
    "dependencies": {
        "express": "4.17.1"
    }
}

还有 package-lock.json 和 npm 模块。 我按照基本步骤创建了一个 aws 应用程序,然后上传并部署了包含我在中提到的四个文件的 zip 文件,并将环境变量 NPM_CONFIG_PRODUCTION 设置为 true。然后当我进入环境时,我得到 502 bad gateway 错误。

当我使用 npm start 在本地运行它时,它工作正常。

这是来自使它看起来像是在工作的日志:


/var/log/web.stdout.log


1 月 10 日 01:46:27 ip-172-31-13-23 web: > newswatcher@0.0.0 start /var/app/current

1 月 10 日 01:46:27 ip-172-31-13-23 web:> 节点 server.js

1 月 10 日 01:46:27 ip-172-31-13-23 web:Express 服务器侦听端口:3000

1 月 10 日 01:49:59 ip-172-31-13-23 web: > Elastic-Beanstalk-Sample-App@0.0.1 start /var/app/current

1 月 10 日 01:49:59 ip-172-31-13-23 web:> 节点 app.js

1 月 10 日 01:49:59 ip-172-31-13-23 web:服务器运行在 http://127.0.0.1:8080/

1 月 10 日 01:58:11 ip-172-31-13-23 web: > newswatcher@0.0.0 start /var/app/current

1 月 10 日 01:58:11 ip-172-31-13-23 网络:> 节点 server.js

1 月 10 日 01:58:11 ip-172-31-13-23 web:Express 服务器侦听端口:3000

这是来自错误日志:

2021/01/10 02:24:23 [错误] 4619#0: *431 connect() 在连接到上游时失败(111:连接被拒绝),客户端:172.31.24.137,服务器:,请求:“GET /HTTP/1.1”,上游:“http://127.0.0.1:8080/”,主机:“172.31.13.23”

2021/01/10 02:24:23 [错误] 4619#0: *433 connect() 在连接到上游时失败(111:连接被拒绝),客户端:172.31.10.27,服务器:,请求:“GET /HTTP/1.1”,上游:“http://127.0.0.1:8080/”,主机:“172.31.13.23”

这些事情就这样继续下去。

怎么了?

【问题讨论】:

  • 您的日志显示 express 在端口 3000 上,但 nginx 需要 8080。
  • 谢谢,我认为 aws 会自动使它们同步。如果未设置,我将应用程序端口设置为 process.env.port 和 3000。那时没有定义 process.env.port 吗?
  • 不,由您来设置。您是否设法更改了端口并成功了?
  • 是的,我将 server.js 中的端口更改为 3000 并重新进行了所有操作
  • 很高兴听到这个消息。如果您不介意,我会提供答案以供将来参考。

标签: node.js amazon-elastic-beanstalk


【解决方案1】:

基于 cmets。

问题是由于 express 在 3000 端口上运行,但 nginx 期望端口 8080。解决方案是为 nginx 使用 3000 端口。

【讨论】:

    猜你喜欢
    • 2016-02-27
    • 2021-03-07
    • 2021-06-22
    • 2019-07-27
    • 2019-03-25
    • 2016-04-09
    • 2016-12-20
    • 2020-10-01
    • 2014-10-04
    相关资源
    最近更新 更多