【问题标题】:What version of the Kubernetes NGINX Ingress supports websockets?哪个版本的 Kubernetes NGINX Ingress 支持 websockets?
【发布时间】:2020-05-16 12:49:45
【问题描述】:

我遇到了an article,它说 NGINX Ingress 从 1.3 版开始支持 websocket。但是this changelog 在 0.9 版本中提到了 websocket 文档。

我在 0.23.0 版本的 NGINX Ingress 上运行,我无法让 websocket 客户端连接工作。它失败是因为 Connection 标头是 keep-alive 而不是 upgrade。看起来入口正在改变它,因为如果我绕过入口并直接进入 Kubernetes 服务,连接就可以工作。在我走得更远之前,很高兴知道这对于我目前正在运行的 NGINX 版本是否毫无希望。

【问题讨论】:

  • ingress-nginx 0.23.0 封装了 nginx 1.15.9,所以 nginx 本身支持 websockets。我不确定您是否可以在没有特殊配置的情况下进行升级,但我相信专用 ws 服务器的 path 应该可以工作 - gist.github.com/jsdevtom/…
  • @cbarlock 以上信息有帮助吗?
  • 谢谢马特。我不知道您上面提到的打包和版本控制。我找到了您引用的链接,并认为我的 Ingress YAML 定义设置正确。我正在使用 gorilla/websocket 包在 Go 中编写代码。我看到请求进来了,但 gorilla 拒绝了它,因为 Connection HTTP 标头设置为 keep-alive 而不是 upgrade。关于这个“特殊配置”,你能多说几句吗?
  • NGINX Ingress 文档说您需要为那些支持 websockets 的服务添加注释。我加了:nginx.org/websocket-services: tcs-bvt-eprouter-websocket 并且有一个上面名字的服务。我希望 Ingress 会说“哦,一个 websocket。它需要连接标头为upgrade,但这似乎没有发生。
  • 你成功了吗?

标签: nginx kubernetes websocket


【解决方案1】:

我发现了问题。我们的 Helm 图表明确地将 Ingress 注释 nginx.ingress.kubernetes.io/connection-proxy-header 设置为 keep-alive。删除它,一切都很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 2020-12-03
    • 2021-03-26
    • 2020-01-05
    • 2018-06-21
    • 1970-01-01
    相关资源
    最近更新 更多