WebSocket在tcp模式下无法与HAProxy一起使用

时间:2017-04-06 19:42:54

标签: java spring tcp websocket haproxy

在此处考虑我的HAProxy配置:

global
    chroot /var/lib/haproxy
    user haproxy
    group haproxy

defaults
    timeout connect 10s
    timeout client 50s
    timeout server 50s

frontend fe_https_tomcat
    mode tcp
    bind *:443 ssl crt /path/cert.pem alpn h2,http/1.1
    default_backend be_tomcat

backend be_tomcat
    mode tcp
    server localhost localhost:8081 check

我遇到的问题是WebSocket似乎没有通过。我的猜测是在tcp模式下,一切都会通过。看起来它没有......: - )

当WebSocket连接建立时,服务器响应错误403

请注意,使用以下http模式设置,WebSocket才能正常工作:

frontend fe_http_8080
    mode http
    bind *:8080
    default_backend be_tomcat_8080

backend be_tomcat_8080
    mode http
    server localhost localhost:8081 check

请注意,我需要tcp-mode才能使http / 2工作。

1 个答案:

答案 0 :(得分:0)

该问题最后与HAProxy无关,而是与Spring中的WebSocket设置有关。 这修好了它:

-registry.addHandler(webSocketHandler, "/ws");
+registry.addHandler(webSocketHandler, "/ws").setAllowedOrigins("*");