为何ELB无法转发流量至EC2实例?如何解决HTTPS混合内容问题
问题诊断与解决方案
ELB未正常工作的排查步骤
1. 负载均衡器监听配置
- 确认ELB已配置443端口的HTTPS监听,且关联的ACM证书状态为
Issued(未过期、域名验证通过) - 检查HTTPS监听的转发规则:是否将流量转发至目标组的8080端口(匹配EC2上Spring Boot的监听端口)
- 若保留80端口的HTTP监听,需配置重定向至HTTPS,避免用户或前端访问HTTP地址
2. 目标组配置验证
- 目标组协议设为HTTP,端口指定8080,与EC2应用的监听端口一致
- 健康检查配置:路径设为
/meta/check,端口选8080,协议为HTTP,确认EC2实例在目标组中的状态为健康(不健康实例不会被ELB转发流量) - 确认目标组与EC2实例处于同一VPC,跨VPC会导致转发失败
3. 安全组规则检查
- ELB安全组:允许入站的443(HTTPS)、80(HTTP,若需重定向)端口,来源可设为
0.0.0.0/0或前端Amplify的IP范围 - EC2安全组:仅允许来自ELB安全组的入站流量访问8080端口,禁止直接开放8080到公网(防止前端绕过ELB访问HTTP)
- 确保ELB和EC2的出站规则允许必要流量(如ELB与ACM的通信、EC2的服务请求)
4. DNS与访问地址验证
- 前端API请求必须指向ELB的域名(如
xxx.elb.amazonaws.com或自定义域名),禁止直接调用EC2公网IP - 若使用自定义域名,需确认DNS服务(如Route 53)已将域名解析至ELB的域名
混合内容问题解决关键
- 替换前端所有硬编码的EC2 IP/HTTP地址为ELB的HTTPS地址(格式:
https://your-elb-domain.com/api/xxx) - 配置Spring Boot识别ELB转发的HTTPS协议:在
application.properties中添加以下配置,确保应用返回的链接或资源路径使用HTTPSserver.forward-headers-strategy=framework server.tomcat.remote-ip-header=x-forwarded-for server.tomcat.protocol-header=x-forwarded-proto
内容的提问来源于stack exchange,提问作者Raknaros
相关产品推荐
相关产品推荐

