如何用CloudFront连接EKS私有集群内的Internal ALB(仅HTTP)?
可行的连接方案
由于Internal ALB仅在VPC内部可访问,CloudFront作为公网服务无法直接穿透VPC访问私有资源,以下是仅使用HTTP协议、无需SSL证书的可行配置方案:
方案一:通过VPC端点服务(AWS PrivateLink)实现CloudFront访问Internal ALB
这是官方推荐的生产级方案,无需暴露内部资源到公网:
- 为Internal ALB创建VPC端点服务
- 进入AWS VPC控制台,找到「端点服务」并点击创建
- 关联你的Internal ALB作为服务负载均衡器
- 在权限设置中,添加
cloudfront.amazonaws.com作为可信实体,允许CloudFront访问该端点服务
- 配置CloudFront分发源
- 新建或编辑CloudFront分发,将Origin域名设置为VPC端点服务的DNS名称(而非Internal ALB的域名)
- Origin协议策略选择「HTTP only」
- 验证网络配置
- Internal ALB的安全组需允许来自VPC端点服务所在子网的80端口流量
- VPC端点服务的子网路由表需能访问Internal ALB所在子网
方案二:用EC2中转代理(适合临时测试或小规模场景)
如果不想配置PrivateLink,可在VPC公有子网部署EC2作为反向代理:
- 在EC2上安装Nginx/Apache,配置反向代理指向Internal ALB
- 示例Nginx配置:
server { listen 80; location / { proxy_pass http://[Internal-ALB-DNS]; proxy_set_header Host $host; } }
- 示例Nginx配置:
- 为EC2分配弹性公网IP(EIP),安全组允许CloudFront IP段访问80端口
- 将CloudFront的Origin设置为EC2的EIP或公网DNS,协议策略选择「HTTP only」
关键注意事项
- 在CloudFront的「行为」设置中,将「查看器协议策略」改为「HTTP only」,避免强制跳转HTTPS引发的证书问题
- 确认Internal ALB的目标组健康检查正常,应用可在VPC内部通过HTTP正常访问
- 若使用PrivateLink,需确保VPC端点服务状态为「可用」,且CloudFront能正确解析其DNS
内容的提问来源于stack exchange,提问作者Pavithran Baskaran
相关产品推荐
相关产品推荐

