Amazon web services AWS弹性Beanstalk部署错误:502坏网关

Amazon web services AWS弹性Beanstalk部署错误:502坏网关,amazon-web-services,amazon-elastic-beanstalk,Amazon Web Services,Amazon Elastic Beanstalk,我正在尝试将本地开发的web应用程序部署为aws实例。该应用程序基于web,具有node.js后端。我使用aws的Elastic Beanstalk上传了这个应用程序,它非常简单,运行良好。部署完成后,我收到了一个绿色健康复选标记 但是,当我选择仪表板顶部的url以打开新部署的应用程序时,我收到一个“502坏网关”错误。我在谷歌上搜索了一下,以确定错误是什么,以及如何纠正错误,但没有多大成功。大多数的建议是刷新页面,它会以某种方式“自行”消失。没有。我还通读了弹性豆茎战争-502坏网关堆栈溢出问

我正在尝试将本地开发的web应用程序部署为aws实例。该应用程序基于web,具有node.js后端。我使用aws的Elastic Beanstalk上传了这个应用程序,它非常简单,运行良好。部署完成后,我收到了一个绿色健康复选标记

但是,当我选择仪表板顶部的url以打开新部署的应用程序时,我收到一个“502坏网关”错误。我在谷歌上搜索了一下,以确定错误是什么,以及如何纠正错误,但没有多大成功。大多数的建议是刷新页面,它会以某种方式“自行”消失。没有。我还通读了弹性豆茎战争-502坏网关堆栈溢出问题也没有多少成功

以下是我从aws下载的error.log的输出:

2018/10/11 15:04:24 [error] 2946#0: *231 connect() failed (111: 
Connection refused) while connecting to upstream, client: 172.31.88.17, 
server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8081/", 
host: "sowapp-env.bpcts5p34k.us-east-1.elasticbeanstalk.com"
2018/10/11 15:04:24 [error] 2946#0: *231 connect() failed (111: 
Connection refused) while connecting to upstream, client: 172.31.88.17, 
server: , request: "GET /favicon.ico HTTP/1.1", upstream: 
"http://127.0.0.1:8081/favicon.ico", host: "sowapp-env.bpcts5p34k.us-east-1.elasticbeanstalk.com", referrer: "http://sowapp-env.bpcts5p34k.us-east-1.elasticbeanstalk.com/"
2018/10/11 15:05:13 [error] 2946#0: *231 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.88.17, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8081/", host: "sowapp-env.bpcts5p34k.us-east-1.elasticbeanstalk.com"
2018/10/11 15:05:13 [error] 2946#0: *231 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.88.17, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:8081/favicon.ico", host: "sowapp-env.bpcts5p34k.us-east-1.elasticbeanstalk.com", referrer: "http://sowapp-env.bpcts5p34k.us-east-1.elasticbeanstalk.com/"
我还下载了nodejs.log,它似乎表明aws服务器没有指向启动文件server.js

Error: Cannot find module '/var/app/current/system.js'
at Function.Module._resolveFilename (module.js:476:15)
at Function.Module._load (module.js:424:25)
at Module.runMain (module.js:611:10)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:160:9)
at bootstrap_node.js:507:3
module.js:478
throw err;
欢迎提出建议

谢谢…

我想试试这个。 在源代码中设置一个名为.ebextensions的文件夹,将您的上传到elastic beanstalk 在此处创建文件以设置源和应用程序

例如,创建名为node-settings.config的文件 (要运行应用程序需要初始化的任何npm命令)示例\/链接:

option_settings:
  aws:elasticbeanstalk:container:nodejs: 
    NodeCommand: "npm start"
    ProxyServer: apache
    GzipCompression: true
  aws:elasticbeanstalk:container:nodejs:staticfiles:
    /images: myimages
以下链接显示了在此文件(nodejs)中可以设置为平台特定选项的内容:

在我的例子中,我尝试将node.js端口更改为8081,并在本地分支上提交。此后,通过命令行部署执行eb deploy解决了我的问题。

那么,当您更新elastic beanstalk堆栈时,更新完成后,如何在实例上启动node.js服务器?我还没有。它在应用程序仪表板上声明Node.js在64位Amazon Linux/4.5.4上运行。我假设elastic beanstalk启动了服务器…那么,如何指定主机ip地址和端口号呢?在开发环境中?现在我在开发环境中有两个环境变量,主机和端口。我应该在开发环境中将它们设置为127.0.0.1和8081,还是将它们留空,让beanstalk赋值?下面是我的启动文件server.js的摘录:var host=process.env.host;var port=process.env.port;如果您尝试如上所述进行配置,请尝试运行带有“npm run devServer”的Node命令,并在链接中设置带有端口8080的process.env.HOST 0.0.0,它指定如果app.js不存在,将自动使用server.js。也许我应该留白?不客气!如果它解决了您的问题,请标记此答案;)