如何在不开放公网端口的前提下,让私有子网EC2上的UI对外可访问?
可行解决方案
方案1:CloudFront + VPC端点 + Origin Access Control(推荐)
- 部署CloudFront分发,将源设置为私有子网EC2的私有IP:UI端口
- 在EC2所在VPC中创建CloudFront的Interface类型VPC端点,确保CloudFront能通过私有网络访问EC2
- 配置EC2安全组:仅允许CloudFront VPC端点的CIDR或关联安全组访问UI端口,无需开放任何公网IP段
- 启用CloudFront的Origin Access Control(OAC),强制所有访问EC2的流量必须经过CloudFront,避免未授权的直接访问
- 用户通过CloudFront分配的公网域名访问UI,流量全程通过AWS私有网络链路到达EC2,EC2无需配置公网IP或开放公网端口
方案2:公网ALB + 私有EC2目标组
- 在VPC的公有子网部署公网类型的Application Load Balancer(ALB)
- 创建目标组,将私有子网内的EC2实例添加为目标,指定UI端口
- 配置EC2安全组:仅允许ALB的安全组访问UI端口,无需开放公网IP
- 用户直接访问ALB的公网域名,流量经ALB转发到私有子网的EC2,EC2全程不暴露公网端口
- 若需进一步提升安全性,可在ALB前端再套一层CloudFront,用OAC限制仅CloudFront能访问ALB,统一入口并增强防护
方案3:API Gateway + Lambda反向代理(适合轻量UI)
- 创建API Gateway REST API,设置对应UI路径的资源
- 部署Lambda函数,配置VPC访问权限(关联EC2所在VPC的子网和安全组),让Lambda能访问私有EC2的UI服务
- 将API Gateway的资源集成到Lambda,由Lambda转发请求到EC2并返回UI内容
- 用户访问API Gateway的公网域名获取UI,EC2仅需允许Lambda所在安全组访问,无需开放公网端口
与现有后端架构的兼容建议
上述方案均可与你已有的NLB+API网关架构共存:
- 若用CloudFront方案,可在分发中配置路径规则,将UI路径转发到EC2,API路径转发到现有API网关,实现统一入口
- 若用ALB方案,可在ALB中添加监听规则,区分UI和API流量,分别转发到EC2和NLB/API网关
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

