AWS Application Load Balancer指向EC2上Spring Boot应用的HTTPS请求无响应问题求助
让我们一步步拆解这个问题,从最关键的点开始排查:
优先开启ALB访问日志
你提到还没配置日志到S3,这是定位问题的核心手段!赶紧进入ALB的配置页面,找到「访问日志」选项,指定一个有权限的S3存储桶。等待5-10分钟后去查看日志,里面会详细记录每个请求的生命周期——比如请求是否真的到达了ALB、转发时遇到了什么错误(比如目标组无健康实例、连接超时、协议不兼容等)。没有日志的话,很多问题只能靠猜,这一步一定要先做。验证域名DNS解析是否正确
你说ping域名返回的是非dualstack IP,但配置的是别名指向dualstack路由值。这里要注意:当使用ALB的别名记录时,DNS应该返回ALB的dualstack端点(格式通常是dualstack.<alb-name>-xxxxxx.us-east-1.elb.amazonaws.com)。可以用dig <你的域名>或者nslookup <你的域名>命令查看解析结果,确认返回的CNAME/A记录是否真的指向了正确的dualstack ALB域名。如果解析错误,流量根本到不了ALB,这就能解释监控里无入站请求的问题。检查VPC网络ACL配置
虽然你提到ALB和EC2用的安全组都没问题,但VPC的网络ACL是容易被忽略的点。网络ACL是VPC层面的防火墙,默认允许所有出入,但如果被修改过,可能会阻断443端口的流量:- 确认ALB所在子网的网络ACL,入站规则允许
0.0.0.0/0的TCP 443端口,出站规则允许所有响应流量(比如允许临时端口的回包)。 - 确认EC2实例所在子网的网络ACL,允许ALB子网的IP段(属于172.31.0.0/16)访问TCP 443端口。
- 确认ALB所在子网的网络ACL,入站规则允许
确认ALB的Scheme和监听器配置
- 检查ALB的「Scheme」是否为
internet-facing:如果是内部ALB,公网是无法访问的,直接会导致超时。 - 核对HTTPS监听器的默认动作:确保确实是转发到了目标组,没有误配置成固定响应或其他动作。另外可以检查监听器的SSL协议版本(比如是否强制使用了后端不支持的TLS 1.3),不过你提到健康检查成功,这条优先级稍低。
- 检查ALB的「Scheme」是否为
再次验证目标组与EC2的连通性
虽然健康检查成功,但还是可以再确认几个细节:- 目标组里的EC2实例状态是否持续为「健康」,有没有偶尔波动?
- 如果目标组用的是HTTPS协议,Spring Boot应用是否真的在443端口监听?你直接访问公网IP时用的是443还是80?如果本地用自签名证书,目标组健康检查的「验证证书」选项是否已关闭(如果开启会导致自签名证书验证失败,但你说健康检查成功,应该是关闭了)?
- EC2安全组的入站规则是否允许ALB的安全组访问443端口?你说开放了所有来源,那没问题,但如果是限制了特定IP,要确保ALB的安全组在允许列表内。
直接测试ALB端点
跳过域名,直接访问ALB的官方域名(比如lb-prod-xxxxxx.us-east-1.elb.amazonaws.com或dualstack版本),用HTTPS请求试试:- 如果访问ALB域名也失败,说明问题出在ALB本身或到ALB的流量链路;
- 如果访问ALB域名成功,那就是域名解析或别名记录配置的问题。
内容的提问来源于stack exchange,提问作者Lukas Bradley

