能否利用AWS免费额度通过ELB为EC2上的ABC.com配置HTTPS?
嘿,这个需求完全可以用AWS的免费资源搞定,而且不需要额外付费,我给你梳理下具体的实现步骤,都是基于免费额度内的服务:
核心思路
用**Application Load Balancer(ALB)**结合AWS Certificate Manager(ACM)的免费SSL证书,通过ALB的主机头路由规则,只把ABC.com的流量引导到EC2实例,其他域名(DEF.com、XYZ.com)保持原有的直接访问方式,完全不影响它们的HTTP服务。
1. 申请免费的SSL证书(ACM)
- 登录AWS控制台,进入**Certificate Manager(ACM)**服务,一定要选择和你的EC2实例相同的AWS区域(ALB和证书必须同区域,否则无法绑定)。
- 点击「请求证书」,选择「请求公有证书」,输入
ABC.com(如果需要支持www.ABC.com可以一起添加,都是免费的)。 - 验证方式选DNS验证,AWS会生成对应的CNAME记录,你到域名的DNS服务商后台添加这条记录就行,等待ACM验证通过(一般几分钟搞定)。证书验证通过后就可以用了,完全免费。
2. 创建Application Load Balancer(ALB)
- 进入EC2控制台,选择「负载均衡器」,点击「创建负载均衡器」,选「Application Load Balancer」。
- 基本配置:给ALB起个好记的名字,选择「面向互联网」,IP地址类型选IPv4。
- 网络映射:选择和EC2实例相同的VPC,至少选两个可用区(符合AWS免费额度要求,还能保证高可用),每个可用区选一个子网。
- 安全组:新建一个安全组,开放80(HTTP)和443(HTTPS)端口,允许所有公网IP访问(0.0.0.0/0)。
- 监听和路由:
- 先配置443端口:协议选HTTPS,端口443,然后选择刚才在ACM申请的证书。接着创建新目标组,目标类型选「实例」,填好目标组名称,协议选HTTP,端口填你EC2上网站服务的端口(一般是80),最后把你的EC2实例添加到目标组里完成创建。
- 再配置80端口:协议选HTTP,端口80,建议直接配置重定向到HTTPS,规则选「重定向到HTTPS」,端口443,这样用户访问
http://ABC.com会自动跳转到HTTPS。
3. 配置ALB的主机头路由规则(关键步骤!)
- 回到ALB的监听器页面,找到443端口的监听器,点击「查看/编辑规则」。
- 删除默认的全匹配规则,点击「添加规则」,选择「主机头」条件,输入
ABC.com(如果支持www的话,点击「添加主机头」再输入www.ABC.com)。 - 然后添加「转发到」动作,选择刚才创建的目标组,保存规则。
- (可选)80端口的监听器如果配置了重定向,也可以添加主机头条件,只对
ABC.com的HTTP请求做重定向——不过因为其他域名的DNS不会指向ALB,不配置也不影响。
4. 修改ABC.com的DNS解析
- 登录你的域名服务商控制台,找到
ABC.com的DNS记录,把原来指向EC2公网IP的A记录改成CNAME记录,指向ALB的DNS名称(在ALB详情页面就能找到)。 - 等待DNS生效(一般几分钟到几小时),之后访问
ABC.com就会走ALB的HTTPS通道了。
5. 验证配置和注意事项
- 访问
https://ABC.com,检查浏览器地址栏的锁图标,确认证书有效、网站正常加载。 - 确认
DEF.com和XYZ.com仍然可以通过原来的HTTP方式访问,不受任何影响。 - 免费额度说明:ALB在AWS免费套餐内每月有750小时的使用时长(和EC2的免费时长对应),只要你的EC2是在免费额度内,ALB的使用也不会超额度;ACM的SSL证书完全免费,没有额外费用。
- EC2安全组调整:确保EC2的安全组允许ALB的安全组访问HTTP端口(80),同时保留原来的规则允许公网访问80(给DEF.com和XYZ.com的流量)。
内容的提问来源于stack exchange,提问作者Rasikh Mashhadi
相关产品推荐
相关产品推荐

