Fargate前端通过Service Discovery调用后端遇混合内容错误
问题分析与解决方案
内部负载均衡器(ALB)超时原因排查
你遇到的内部ALB仅VPN连接可用、正常访问超时的问题,大概率是以下配置遗漏:
- 安全组规则错误:
- 内部ALB的安全组未开放前端Fargate所在安全组的HTTPS(443)入站权限
- 后端Fargate的安全组未开放内部ALB安全组的后端服务端口入站权限
- 目标组配置失效:
- 后端Fargate任务未成功注册到目标组
- 健康检查路径、端口或响应码配置错误,导致ALB认为后端服务不可用
- 子网路由问题:
- 内部ALB部署的子网无需关联互联网网关(IGW),但需确保前端Fargate所在子网与ALB子网在同一VPC,且路由表包含VPC内部路由
是否需要为每个后端部署内部ALB?
不一定,需根据架构需求判断:
- 若后端为单实例或低并发服务,可直接在后端容器内配置HTTPS,无需额外ALB
- 若后端为多实例需要负载均衡、或需统一的SSL终止点,内部ALB是更规范的选择
最佳解决方案
针对混合内容错误,推荐两种方案:
方案一:前端反向代理(最简无额外资源)
通过前端容器内置的反向代理(如Nginx),将浏览器发起的后端请求转发至VPC内的后端HTTP服务:
- 浏览器仅与公网ALB建立HTTPS连接,前端与后端的HTTP通信完全在VPC内部,不会触发混合内容限制
- 示例Nginx配置片段:
location /api { proxy_pass http://backend-service-name.your-cloudmap-domain:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
方案二:后端HTTPS化(适合复杂架构)
为后端配置HTTPS端点,彻底消除混合内容风险:
- 在AWS ACM中申请私有证书(针对VPC内部域名,如
*.internal.yourdomain.com) - 为后端服务部署内部ALB,绑定该私有证书并开启HTTPS监听
- 将内部ALB的域名注册至AWS Cloud Map,前端通过该域名的HTTPS端口访问后端
- 修正安全组配置:
- 内部ALB安全组允许前端Fargate安全组的443端口入站
- 后端Fargate安全组允许内部ALB安全组的后端服务端口入站
内容的提问来源于stack exchange,提问作者Mau d'Ávila
相关产品推荐
相关产品推荐

