Como selecionar um backend diferente baseado em URI ao usar o "modo tcp"

1

Estou usando o haproxy versão 1.6.2

Eu habilitei o http2 usando a configuração abaixo, a qual eu preciso usar o "modo tcp". Mas depois que eu mudei de "mode http" para "mode tcp" eu não pude usar o path_beg acl para

frontend websocks
    mode tcp
    bind *:443 ssl crt /etc/certs/domain.pem alpn h2,http/1.1 ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH; no-sslv3
    timeout client 1h
    acl is_api path_beg /api
    acl is_xmpp path_beg /chat
    use_backend api_backend if is_api
    use_backend xmpp_backend if is_xmpp
    use_backend fe_public_tcp if { ssl_fc_alpn -i h2 }
    default_backend fe_public

fe_public
    server fe1 localhost:444 weight 1 maxconn 4096 check inter 10000 ssl verify none        

fe_public_tcp
    mode tcp
    server fe1 localhost:445

api_backend
    server api1 localhost:9966

xmpp_backend
    server xmpp1 localhost:9955

Como faço o path_beg e o http2 funcionar novamente? ou existe uma maneira de habilitar http2 sem o modo tcp?

    
por forestclown 16.11.2015 / 13:31

1 resposta

5

Para usar recursos específicos do protocolo, você deve usar o modo apropriado. O modo tcp lhe dá acesso apenas a recursos específicos do tcp, mas para obter recursos específicos do http, como escolher o back-end baseado no URI, você precisa ter o modo http.

Infelizmente o HTTP / 2 parece muito diferente do HTTP / 1.xe não é suportado pelo modo http atualmente, então você tem que usar o modo tcp. Isso também significa que você não pode tomar nenhuma decisão baseada em URI contanto que você queira suportar HTTP / 2.

É esperado um melhor suporte para HTTP / 2 com o haproxy versão 1.7. Do link :

May, 15th, 2015 : HTTP/2 is out!

Today, HTTP/2 officially exists as RFC7540 and RFC7541. ... Version 1.6 will not support HTTP/2 yet ... We expect to support it by the end of the year, during the 1.7 development cycle.

    
por 16.11.2015 / 14:47