AKS从1.23升级至1.25/1.26后WebSocket异常问题咨询
AKS升级后Vue应用WebSocket连接失败的原因分析
核心问题
AKS升级到1.25/1.26后,Webpack Dev Server生成的WebSocket连接地址从外部域名变成了Pod内部IP,导致HTTPS页面发起不安全的ws://请求,被浏览器的混合内容策略拦截,最终页面无法加载。
具体触发因素
- AKS 1.25+的Ingress控制器变化
AKS 1.25及以上版本默认升级了Ingress NGINX控制器至v1.0+,同时Kubernetes 1.25调整了Ingress请求头的转发逻辑。新版本控制器未能正确传递外部域名的Host或X-Forwarded-Host头,导致Webpack Dev Server无法获取外部域名,转而使用Pod内部IP作为WebSocket连接的主机地址。 - Webpack Dev Server配置缺失
应用未显式配置Webpack Dev Server的public参数(Vue项目对应vue.config.js中的devServer.public),依赖自动推断连接地址。AKS 1.23的旧版Ingress逻辑能让Webpack正确推断外部域名,但1.25+的环境变化打破了这一推断逻辑。 - AKS 1.24的过渡兼容性
AKS 1.24使用的Ingress控制器版本仍保留旧的请求转发逻辑,Webpack Dev Server能正常获取外部域名,因此应用运行正常。
关键验证点
- 检查
vue.config.js或Webpack配置,确认是否设置了devServer.public为你的外部域名(例如DOMAIN_NAME:8081)。 - 对比不同AKS版本集群中Ingress控制器的版本差异。
- 在Pod内查看请求的
Host和X-Forwarded-Host头,确认Webpack能否获取正确的外部域名。
内容的提问来源于stack exchange,提问作者Ajinkya Bapat
相关产品推荐
相关产品推荐

