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协议。如果要配置端到端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 ===============