借助AWS CloudFront实现HTTPS连接的最优方案咨询
最优方案:基于CloudFront+ELB+ASG实现HTTPS访问
核心架构逻辑
既然已经用CloudFront提供对外的HTTPS入口,最优路径是让CloudFront作为唯一的公网访问端点,流量经CloudFront转发到ELB,再由ELB分发到ASG内EC2实例的3000端口。同时要收紧安全组权限,避免不必要的公网暴露。
具体配置步骤
1. 调整CloudFront分发设置
- 源配置:将源域名设为你的ELB官方DNS名称,源端口选择
80(后续ELB会把80端口的流量转发到EC2的3000端口)。 - 源协议策略:选
HTTP only——CloudFront对外用HTTPS,和ELB之间用HTTP即可,简化配置。 - 缓存行为规则:针对路径
/*设置查看器协议策略为Redirect HTTP to HTTPS,强制所有用户走HTTPS访问。 - SSL证书:直接使用CloudFront提供的默认证书,或者在AWS Certificate Manager(ACM)中申请并部署到CloudFront的证书,确保HTTPS生效。
2. 配置ELB转发规则
- 添加HTTP监听:在ELB上创建端口80的HTTP监听,将流量转发到目标组。
- 目标组设置:把目标组的转发端口指定为EC2实例的
3000端口,同时配置健康检查路径(比如你的应用/health端点)和端口3000,确保ASG能准确识别实例健康状态。
3. 收紧安全组权限(关键优化)
- EC2实例安全组:仅允许ELB安全组访问TCP 3000端口,无需对
0.0.0.0/0开放3000端口,避免直接公网访问实例。 - ELB安全组:仅允许来自CloudFront官方IP段(可使用AWS提供的前缀列表
com.amazonaws.global.cloudfront.origin-facing)访问TCP 80端口,禁止直接公网访问ELB,确保流量只能通过CloudFront进入。
4. 验证配置有效性
- 访问CloudFront分配的HTTPS域名,确认能正常加载EC2上3000端口的应用。
- 尝试直接访问ELB的DNS域名,确认无法通过公网访问,验证流量路径的唯一性。
可选优化项
- 若需端到端加密,可在ACM申请证书部署到ELB,开启ELB的HTTPS监听,同时将CloudFront的源协议策略改为
HTTPS only,实现CloudFront到ELB的加密传输。 - 针对应用内的静态资源,配置CloudFront缓存规则设置合理缓存时长,减少回源请求,提升访问性能。
内容的提问来源于stack exchange,提问作者Tanmaya Pradhan
相关产品推荐
相关产品推荐

