环境说明:
这个方案更适合有负载均衡器需求的场景,因为ALB 是一个高度可用和可扩展的服务,可以自动分担应用程序的流量负载。如果单个 EC2 实例发生故障,ALB 会自动将流量重新路由到健康的实例,从而确保网站的高可用性。这里比较重要的一点是ALB 可以终止 SSL/TLS 连接,并将解密后的数据流转发到后端 EC2 实例,降低了实例的计算开销。所以意味着ALB和EC2之间是http通信,但是一般后端目标组内EC2处于一个私有子网内网的的一个状态,倒也没有这么大所谓。
实验环境说明:
一个域名,一台EC2服务器(OS:Amazon Linux 2023(Fedora)),使用nginx作为网页服务器,负载均衡器和自动扩展组(可选:实验里没有建议实际环境要有)。
操作步骤:
第一步:创建负载均衡器
可以根据实际参考这篇文章:AWS创建负载均衡器(控制台)_aws health checks failed with these codes: [404]-CSDN博客(注意负载均衡器要和EC2同VPC)
1.2(可选):为了网站的高可用性和扩展性建议使用自动扩展组
可以根据实际参考这篇文章:AWS AutoScaling自动扩展组创建_创建自定义aws ec2 auto scaling ami-CSDN博客(注意VPC要保持一致性)
第二步:申请证书或导入证书
如果使用的是route53,可以在ACM申请免费的公有证书(其它域名厂商也可以,只要记录做对)
可以根据实际参考这篇文章:AWS 在AWS上请求公有证书(免费)_亚马逊域名免费证书-CSDN博客
第三方像我们在上一篇文章申请下来可以参考:AWS 将在AWS之外获得的证书导入到AWS_aws iam identity center不支持的区域,如何导证书-CSDN博客
Let’s Encrypt一般会保存在/etc/letsencrypt/live/域名/
对于证书主体,使用 cert.pem,对于证书私钥,使用 privkey.pem,对于证书链,使用 fullchain.pem
第三步:编辑route53记录
在记录这里添加一条ALB的记录,添加完成等一会传播再去访问。
此时还没有加证书访问应该为不安全
第四步:编辑侦听器规则
这里是做了一个http重定向https的操作,当然不做也是可以直接443转发到目标组(注意:目标组端口得是80,如果填的443本身EC2服务器上并没有安装证书这个端口肯定是访问不了)只是怕有些用户会发http请求无法访问。如果像上一篇用第三方证书就直接都走443就好了
将80端口进来的流量转发到443端口里
再添加一个443端口的侦听器
选择第二步中申请下来的证书
完整的http重定向https的侦听器规则
第五步:验证访问