Node.js和Docker- Elastic Beanstalk 502 Bad Gateway

问题描述 投票:2回答:1
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

node.js docker terraform amazon-elastic-beanstalk
1个回答
0
投票

我能够看到我的应用程序配置为在端口80和443处进行侦听,尽管规则仅重定向实例的端口80,即使请求来自https协议。如果要配置端到端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 ===============
© www.soinside.com 2019 - 2024. All rights reserved.