AWS ElasticBeanstalk 上的 502 错误网关 Nginx 节点

Posted

技术标签:

【中文标题】AWS ElasticBeanstalk 上的 502 错误网关 Nginx 节点【英文标题】:502 bad gateway Nginx Node on AWS ElasticBeanstalk 【发布时间】:2015-09-25 15:26:24 【问题描述】:

我已经阅读了很多关于解决此问题的帖子,但到目前为止没有任何效果,我没有想法。

我有一个 Express Generator 应用程序,在本地运行良好,在 AWS Elastic Beanstalk 站点上运行一次。

EB作为单实例运行,安全组允许来自0.0.0.0/0的PORT 80 tcp,其余都是默认的EB配置(ip表,nginx conf等)

这就是我要去的地方......

1) 将节点命令设置为npm start 以确保它运行而不是app.js 2) 更新了 EC2 环境 PATH 以将当前的 node/npm 添加到其中 3) 确保节点端口运行为 8081 4) 检查节点实际上运行正常(在盒子上我可以通过 IP 和弹性 beanstalk ULR 成功 CURL)

但是从盒子外面,弹性beantalk url返回502并出现此错误..

2015/07/07 21:54:59 [error] 7883#0: *4 connect() failed (111: Connection refused) while connecting to upstream, client: 94.174.20.81, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:8081/favicon.ico", host: "ae-prod.elasticbeanstalk.com", referrer: "http://ae-prod.elasticbeanstalk.com/"

Nginx 配置

upstream nodejs 
    server 127.0.0.1:8081;
    keepalive 256;


server 
    listen 8080;

    location / 
        proxy_pass  http://nodejs;
        proxy_set_header   Connection "";
        proxy_http_version 1.1;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    



盒子上的IP表是这样的..

$sudo iptables -t nat -L

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8080

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8080

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

有人有什么想法吗?

【问题讨论】:

确保您的负载均衡器的安全组对外开放。 没有负载均衡器,它只有一个实例。安全组看起来一切正常... 【参考方案1】:

我遇到了同样的问题,结果发现我的节点应用程序由于缺少依赖项而无法启动。检查主机上是否运行了 nodejs 或 npm 进程。如果不去

/var/app/current

并尝试通过npm start 手动启动您的应用。如果它在启动时抛出错误或无法启动,这些可能是 502 的原因。

【讨论】:

以上是关于AWS ElasticBeanstalk 上的 502 错误网关 Nginx 节点的主要内容,如果未能解决你的问题,请参考以下文章

带有 ALB 和 Socket.IO 的 AWS ElasticBeanstalk 上的 HTTP 400 错误

AWS ElasticBeanstalk 上的 Laravel 应用程序未连接到 RDS 数据库

AWS ElasticBeanStalk 上的解析服务器不会将 .mp4 PFFile 流式传输到 AVPlayer?

jac(jinja-assets-compressor)在 AWS elasticbeanstalk 上的烧瓶应用程序中不起作用

替换 AWS Elastic BeanStalk 上的特定实例?

AWS ElasticBeanstalk 上的 Docker:“host.docker.internal:host-gateway”:连接被拒绝。 iptables 问题?