如何将 Traefik 用于 WebSocket 后端

How to use Traefik for WebSocket backend

我正在尝试为 WebSocket 应用程序配置 Traefik,我只是尝试在 docker 上使用一个简单的 WS 应用程序:https://hub.docker.com/r/jmalloc/echo-server/

为了测试它,我使用 Chrome SimpleWebSocketClient,所以如果我使用应用程序的 IP:Port,它工作正常。如果我添加 Traefik DNS 它失败了,我只是尝试使用其他 WS 服务器和客户端,但也失败了,所以它会是 Traefik 的东西。

我只是尝试使用 Traefik 版本:

-v1.3.0/raclette
-v1.2.3/morbier

这些是我的 Traefik 规则:

[backends.ws-test-backend]
    [backends.ws-test-backend.LoadBalancer]
      method = "drr"
    [backends.ws-test-backend.servers.server1]
    url = "ws://172.16.8.231:3000"

[frontends.ws-test-frontend]
  backend = "ws-test-backend"
  passHostHeader = true
  entrypoints = ["http","https","ws", "wss"]
    [frontends.ws-test-frontend.routes.manager]
    rule = "Host:ws-test.ikcloud.ikerlan.es"

这有什么问题吗? 有推荐的反向代理吗?

您需要为您的 ws 连接启用粘性会话,否则它会一直重新连接。

[backends]
  [backends.backend1]
    # Enable sticky session
    [backends.backend1.loadbalancer.stickiness]