要将AWS ELB重定向到HTTPS并暴露内部主机名,您可以使用以下解决方案:
aws elbv2 create-load-balancer --name my-load-balancer --subnets subnet-12345678 --security-groups sg-12345678
aws elbv2 create-target-group --name my-target-group --protocol HTTP --port 80 --vpc-id vpc-12345678
aws elbv2 create-listener --load-balancer-arn arn:aws:elasticloadbalancing:region:123456789012:loadbalancer/app/my-load-balancer/1234567890123456 --protocol HTTP --port 80 --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/my-target-group/1234567890123456
aws acm request-certificate --domain-name example.com --validation-method DNS
这将返回一个证书的ARN(Amazon 资源名称)。将ARN复制到下面的命令中:
aws elbv2 add-listener-certificates --listener-arn arn:aws:elasticloadbalancing:region:123456789012:listener/app/my-load-balancer/1234567890123456/9876543210987654 --certificates CertificateArn=arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012
aws elbv2 create-rule --listener-arn arn:aws:elasticloadbalancing:region:123456789012:listener/app/my-load-balancer/1234567890123456/9876543210987654 --conditions Field=host-header,Values=example.com --priority 1 --actions Type=redirect,RedirectConfig={Protocol=HTTPS,Port=443,Host=example.com,Path=/#{path},Query=#{query},StatusCode=HTTP_301}
aws ec2 authorize-security-group-ingress --group-id sg-12345678 --protocol tcp --port 80 --cidr 0.0.0.0/0
aws ec2 authorize-security-group-ingress --group-id sg-12345678 --protocol tcp --port 443 --cidr 0.0.0.0/0
这些命令将创建一个负载均衡器,配置监听器和目标组,创建SSL证书并将其关联,配置重定向规则,并更新安全组以允许HTTP和HTTPS流量。您可以根据自己的需求进行适当的修改。