如何将 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]
我正在尝试为 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]