You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CloudFormation中EC2静态页无法通过负载均衡器访问问题排查

排查CloudFormation部署的ELB无法访问后端EC2静态页面的问题

我来帮你一步步拆解这个问题:既然EC2实例能直接访问,但通过负载均衡器就不行,结合你提供的CloudFormation模板,咱们重点从安全组配置和ELB健康检查这两个核心方向入手:

1. 安全组的必填项缺失(最可能的问题)

你的模板里的两个安全组SGELB和SGApp都漏掉了必填的GroupDescription属性!AWS要求创建安全组时必须填写这个描述字段,否则CloudFormation部署时要么报错,要么创建出的安全组状态异常,直接影响流量转发。

你需要给两个安全组都补上这个字段,比如:

SGELB:
  Type: 'AWS::EC2::SecurityGroup'
  Properties:
    VpcId: !Ref VPC
    GroupDescription: "允许公网HTTP流量访问ELB" # 新增这行
SGApp:
  Type: 'AWS::EC2::SecurityGroup'
  Properties:
    VpcId: !Ref VPC
    GroupDescription: "允许ELB访问EC2的HTTP服务" # 新增这行

另外,虽然默认安全组会允许所有出站流量,但为了稳妥,你可以给SGELB显式添加出站规则,确保它能访问EC2的80端口:

AllowOutboundHTTPToEC2:
  Type: 'AWS::EC2::SecurityGroupEgress'
  Properties:
    GroupId: !Ref SGELB
    IpProtocol: tcp
    FromPort: '80'
    ToPort: '80'
    DestinationSecurityGroupId: !Ref SGApp

2. 检查ELB的健康检查状态

如果安全组配置没问题,那下一步要看ELB的健康检查是否通过:

  • 登录AWS控制台找到你的ELB,切换到「实例」标签页,查看实例的健康状态。如果显示Unhealthy,说明ELB连不上EC2的80端口,自然不会转发流量。
  • 你的模板里健康检查目标是HTTP:80/,你可以用curl -I http://<EC2公网IP>确认根路径是否返回200状态码(你说能直接访问页面,这步应该没问题,但还是验证下更稳妥)。

3. 其他验证点(快速排除)

  • 路由表:你的公网子网已经关联了指向IGW的路由表,EC2和ELB都能访问公网,这部分配置是对的,不用纠结。
  • EC2安全组关联:模板里已经把SGApp绑定到EC2实例的网卡上了,这部分没问题。

修复后的关键配置片段

把上面的修改整合后,安全组部分的配置应该是这样:

SGELB:
  Type: 'AWS::EC2::SecurityGroup'
  Properties:
    VpcId: !Ref VPC
    GroupDescription: "允许公网HTTP流量访问ELB"
AllowInboundHTTPToELB:
  Type: 'AWS::EC2::SecurityGroupIngress'
  Properties:
    GroupId: !Ref SGELB
    IpProtocol: tcp
    FromPort: '80'
    ToPort: '80'
    CidrIp: 0.0.0.0/0
AllowOutboundHTTPToEC2:
  Type: 'AWS::EC2::SecurityGroupEgress'
  Properties:
    GroupId: !Ref SGELB
    IpProtocol: tcp
    FromPort: '80'
    ToPort: '80'
    DestinationSecurityGroupId: !Ref SGApp

SGApp:
  Type: 'AWS::EC2::SecurityGroup'
  Properties:
    VpcId: !Ref VPC
    GroupDescription: "允许ELB访问EC2的HTTP服务"
AllowInboundHTTPFromELB:
  Type: 'AWS::EC2::SecurityGroupIngress'
  Properties:
    GroupId: !Ref SGApp
    IpProtocol: tcp
    FromPort: '80'
    ToPort: '80'
    SourceSecurityGroupId: !Ref SGELB

重新部署CloudFormation模板后,应该就能通过ELB正常访问你的静态页面了。

内容的提问来源于stack exchange,提问作者Laurent Vaylet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:10:32