💡
原文中文,约2500字,阅读约需6分钟。
📝
内容提要
在使用Kubernetes、NGINX Ingress和WebSocket服务时,CDN返回403 Forbidden错误。经排查,发现问题在于CDN未开启WebSocket支持及请求路径未被允许回源。解决方案是开启WebSocket支持、配置回源路径白名单并保留关键请求头。调整后,WebSocket连接恢复正常,服务稳定。
🎯
关键要点
- 使用Kubernetes、NGINX Ingress和WebSocket服务时,CDN返回403 Forbidden错误。
- 问题在于CDN未开启WebSocket支持及请求路径未被允许回源。
- 解决方案包括开启WebSocket支持、配置回源路径白名单并保留关键请求头。
- 确认Ingress配置正确,路径重写正常。
- 测试绕过CDN,直连Ingress时返回101 Switching Protocols,说明服务正常。
- CDN拒绝连接的原因主要是WebSocket未开启支持和请求路径未允许回源。
- 在Funnell CDN控制台中开启WebSocket支持,配置回源路径白名单。
- 确保请求头透传设置正确,避免被CDN移除或篡改。
- 完成配置后,WebSocket客户端访问成功,连接稳定。
- 总结时需检查CDN是否开启WebSocket支持、回源路径是否允许及关键握手头部是否保留。
❓
延伸问答
WebSocket 403 Forbidden 错误的主要原因是什么?
主要原因是CDN未开启WebSocket支持和请求路径未被允许回源。
如何解决CDN导致的WebSocket 403 Forbidden错误?
解决方案包括开启WebSocket支持、配置回源路径白名单并保留关键请求头。
在Funnell CDN中如何配置WebSocket支持?
在Funnell CDN控制台中开启WebSocket支持,并添加回源路径白名单。
如何确认Ingress配置是否正确?
可以通过测试绕过CDN,直连Ingress并检查返回的状态码是否为101 Switching Protocols来确认。
WebSocket请求头需要保留哪些关键字段?
需要保留的关键请求头包括Connection、Upgrade和Sec-WebSocket-*。
CDN拒绝WebSocket连接的常见特征是什么?
CDN拒绝连接的特征是返回403 Forbidden响应,且后端服务日志中无请求记录。
➡️