Node.js 和 Docker - Elastic Beanstalk 502 错误网关

标签 node.js docker terraform amazon-elastic-beanstalk

sslSecurityGroupIngress: 
  Type: AWS::EC2::SecurityGroupIngress
  Properties:
    GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
    IpProtocol: tcp
    ToPort: 443
    FromPort: 443
    CidrIp: 0.0.0.0/0

在 Nginx 中,我已经增加了 proxy_connect_timeout 和 proxy_read_timeout

最佳答案

我可以看到我的应用程序被配置为在端口 80 和 443 上监听,尽管规则仅重定向实例的端口 80,即使请求来自 https 协议(protocol)也是如此。如果您想配置端到端 https,则需要重定向到实例的端口 443 的规则。

以前我的 Elastic Beanstalk 配置设置如下:

Listener      Rules         Process

443             443            default
80              80             default 

其中“默认”进程通过实例的端口 80 重定向所有连接。

我更新了 ElasticBeanstalk 环境以将 https 请求转发到实例的端口 443?以下是如何将规则与流程关联起来的示例:

======== .ebextensions/https-reencrypt-alb.config ========
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
    Protocol: HTTPS
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
    Protocol: HTTPS
======== .ebextensions/https-reencrypt-alb.config ========

可能导致此问题的一种情况可能与您的应用程序仅监听 443 端口有关,一旦实例中没有该端口的 ALB 重定向规则,则访问失败并显示以下错误是合理的:错误的网关请求。

添加此内容以进行 http 到 https 重定向:

============= http-to-https.config ===============
Resources:
  AWSEBV2LoadBalancerListener:
    Type: AWS::ElasticLoadBalancingV2::Listener
    Properties:
      DefaultActions:
        - Type: redirect
          RedirectConfig:
            Protocol: HTTPS
            Port: 443
            StatusCode: 'HTTP_301'
      LoadBalancerArn:
        Ref: AWSEBV2LoadBalancer
      Port: 80
      Protocol: HTTP
============= http-to-https.config ===============

关于Node.js 和 Docker - Elastic Beanstalk 502 错误网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54677909/

相关文章:

amazon-web-services - 在 Terraform 中插入数据源名称

aws-cloudformation - IAM 策略 : MalformedPolicyDocument: Syntax errors in policy

node.js - 多维数组的 Mongoose 模式解决方法

node.js - 为 SSO 实现 oAuth 是否合适?

javascript - 如何从 Angular JS API 调用 Node.js Web API?

bash - Bash:在后台进行多个npm安装会出现错误 'No space left on device'

javascript - 在 Node.js 中验证 URL

javascript - Docker-compose 不会将本地文件夹中的测试文件复制到 Container 中,而是复制其他所有内容

docker - magento中的 Grunt 不编译文件

amazon-web-services - 如何使用 Terraform 和 AWS API Gateway 创建 API 代理