You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Contour Ingress资源上WebSocket注解失效问题排查

问题排查与解决方案

1. 修正WebSocket路由注解的匹配规则

你当前配置的projectcontour.io/websocket-routes: /api/notificationhub/是精确路径匹配,但SignalR的连接流程会涉及/api/notificationhub/negotiate、/api/notificationhub/connect等子路径,这些路径无法被精确匹配的注解覆盖,导致Contour未将其识别为WebSocket请求,进而触发错误。

修改注解为前缀匹配:

annotations:
  projectcontour.io/websocket-routes: /api/notificationhub/*

或者直接包含所有SignalR相关路径:

annotations:
  projectcontour.io/websocket-routes: /api/notificationhub/,/api/notificationhub/*

2. 排查/api/UserSettings/ 405错误

405状态码表示请求方法不被允许,通常有两种原因:

  • Ingress路径匹配类型错误:确保Ingress规则中/api/UserSettings/对应的pathType是Prefix(而非Exact),否则仅精确匹配/api/UserSettings/的请求会被转发,带参数或子路径的请求会被拒绝。示例配置:
spec:
  rules:
  - http:
      paths:
      - path: /api/UserSettings/
        pathType: Prefix
        backend:
          service:
            name: your-app-service
            port:
              number: 80
  • 后端服务路由限制:确认你的应用服务本身是否允许/api/UserSettings/对应的HTTP方法(如POST/PUT/DELETE等),部分后端框架会对请求方法做限制,与Ingress无关。

3. 理解Grafana与你的应用的差异

Grafana的WebSocket路径为单一的/ws,精确匹配注解即可覆盖所有WebSocket流量;而你的SignalR路径包含复杂子路径结构,这是相同注解在Grafana生效、在你的应用失效的核心原因。

4. 验证Contour注解支持

确保你的Contour版本为1.10+(该版本开始支持projectcontour.io/websocket-routes注解),且未禁用Ingress资源处理(默认启用)。可查看Contour控制器日志,检查是否存在WebSocket路径匹配失败的错误记录。


内容的提问来源于stack exchange,提问作者Golide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 09:43:11