ALB目标组443/8443端口健康检查失败,Spring Boot部署求助
EC2+ALB+Route53部署Spring Boot HTTPS服务问题排查与解决
问题1:ALB目标组设443端口健康检查失败
核心原因是你之前Spring Boot因权限问题未启动成功,EC2上443端口无进程监听,健康检查自然失败。补充排查点:
- 确认EC2实例安全组:必须允许ALB所属安全组访问443端口,不能只配置ALB的安全组
- 先解决Spring Boot绑定443端口的权限问题(参考问题2方案),再验证EC2本地443端口是否有服务响应
问题2:Spring Boot绑定443端口权限问题的合法方案
类Unix系统1-1024端口需root权限,推荐两种安全方案:
- 端口转发(iptables)
让Spring Boot监听非特权端口(如8443),用iptables将443流量转发过去:
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443
安装iptables-persistent保存规则,避免重启失效。
2. authbind工具授权
- 安装authbind:
sudo apt install authbind(Debian/Ubuntu),RHEL系使用对应yum包 - 创建端口权限文件:
sudo touch /etc/authbind/byport/443 sudo chmod 755 /etc/authbind/byport/443 sudo chown your-user:your-group /etc/authbind/byport/443
- 用authbind启动应用:
authbind --deep java -jar your-app.jar
- 不推荐直接用root启动,生产环境安全风险极高。
问题3:监听8443端口但ALB目标组不健康
按以下步骤排查:
- 检查健康检查配置
- 协议必须选HTTPS,因为Spring Boot在8443用的是HTTPS,选HTTP会直接被拒绝
- 健康检查路径要正确:如果用Spring Boot Actuator,需先开启
management.endpoints.web.exposure.include=health,然后路径填/actuator/health;如果自定义了健康接口,填对应路径,确保返回200状态码 - 确认目标组健康检查端口设为8443,别和ALB的监听端口混淆
- 手动验证EC2本地响应
- 在EC2内部执行
curl https://localhost:8443/actuator/health,查看是否返回200 - 用AWS Systems Manager登录EC2,访问自身私有IP+8443端口,确认服务正常
- 在EC2内部执行
- 检查安全组与ACL
- EC2实例安全组要允许ALB的安全组访问8443端口
- VPC网络ACL入站规则允许tcp 8443,出站规则允许响应的tcp流量(通常默认开放,但需确认)
额外配置要点
- ACM证书必须和ALB在同一AWS区域,且已关联到ALB的443端口监听
- Route53的CNAME记录要指向ALB的域名,不是EC2的公网IP
- Spring Boot HTTPS配置示例(application.properties):
server.port=8443 server.ssl.key-store-type=PKCS12 server.ssl.key-store=classpath:your-cert.p12 server.ssl.key-store-password=your-cert-password server.ssl.key-alias=your-cert-alias
内容的提问来源于stack exchange,提问作者YSEO
相关产品推荐
相关产品推荐

