ALB配置下SpringBoot应用WebSocket服务报Invalid HTTP upgrade(404)错误排查求助
解决EKS ALB下SpringBoot WebSocket的404升级错误
针对你遇到的WebSocket服务报Invalid HTTP upgrade 404错误的问题,结合你的环境(aws-load-balancer-controller v2.3.0、K8s 1.19 eks.7),我整理了以下排查和解决步骤:
1. 确认Ingress路径匹配规则
404错误首先要怀疑路径映射问题。检查你的ingress.yaml中WebSocket对应的路径配置:
- 如果使用
pathType: Exact,要确保前端请求的wss://xxx.xx.xx.com:443/xx/xx/xx/xx路径和Ingress中定义的完全一致,包括末尾的斜杠、上下文路径等细节。 - 建议对WebSocket路径使用
pathType: Prefix(如果你的端点是子路径),避免精确匹配导致的路径不匹配问题。示例配置:
paths: - path: /xx/xx/xx/xx pathType: Prefix backend: service: name: your-springboot-service port: number: 8080
2. 添加WebSocket支持的Ingress注解
ALB需要特定注解来允许HTTP升级到WebSocket协议,确保你的Ingress包含以下关键注解:
alb.ingress.kubernetes.io/backend-protocol: HTTP:必须设置为HTTP(即使ALB用HTTPS监听,后端服务通常是HTTP端口,ALB会负责SSL终止后转发HTTP请求到后端,包括WebSocket升级请求)。- 确保没有安全组或WAF规则拦截
Upgrade和Connection请求头,这两个头是WebSocket升级的必要条件。
核心注解示例:
annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]' alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:xxx:xxx:certificate/xxx alb.ingress.kubernetes.io/ssl-redirect: '443' alb.ingress.kubernetes.io/backend-protocol: HTTP alb.ingress.kubernetes.io/healthcheck-path: /actuator/health # 你的REST健康检查路径
3. 验证SpringBoot WebSocket配置
检查你的SpringBoot应用是否正确配置了WebSocket端点:
- 确认
@ServerEndpoint注解的路径和前端请求的路径完全一致,包括应用的上下文路径(如果设置了server.servlet.context-path)。比如如果上下文路径是/api,那么端点应该是@ServerEndpoint("/api/xx/xx/xx/xx")。 - 确保应用中已经启用了WebSocket支持,比如添加了
@EnableWebSocket或@EnableWebSocketMessageBroker注解(根据你的WebSocket类型选择)。
4. 检查ALB目标组配置
通过AWS控制台查看ALB对应的目标组:
- 确认目标组的协议是HTTP(不是HTTPS),端口和你的SpringBoot服务端口一致(比如8080)。
- 确认目标组的健康检查状态正常(REST服务正常说明健康检查没问题,但可以确认下目标组是否正确关联了所有Pod)。
5. 查看ALB访问日志
开启ALB的访问日志(在AWS控制台的ALB配置中开启,日志存放在S3),查看WebSocket请求的详细记录:
- 检查请求的
path是否和Ingress配置一致,状态码是否为404(确认是路径问题还是升级失败)。 - 检查请求头中是否包含
Upgrade: websocket和Connection: Upgrade,这些头是WebSocket升级必须的,ALB应该正确转发这些头到后端。
6. 考虑控制器版本兼容性
虽然v2.3.0支持K8s 1.19,但如果以上配置都没问题,可以尝试升级aws-load-balancer-controller到v2.4.x或更高版本(兼容K8s 1.19的版本),因为旧版本可能存在WebSocket转发的已知bug。
内容的提问来源于stack exchange,提问作者Rampn
相关产品推荐
相关产品推荐

