2017-02-16 94 views
3

我有一个用Go编写的Web应用程序,并且由HAProxy负载平衡。 HAProxy还处理SSL/TLS终止。目前的响应都是HTTP/1.1,我希望它们是HTTP/2。我已经在haproxy.conf中尝试了各种各样的东西,但一直无法使它工作。带SSL终止和HTTP/2的HAProxy

我能够得到一个独立的Go服务器,它处理自己的SSL终端使用HTTP/2,但它看起来像所有当前的浏览器只支持通过TLS的HTTP/2。这是否意味着我需要在Web应用程序本身处理SSL终止?或者是否有一些我不知道的解决方法,以便我可以继续在负载均衡器处终止SSL并仍然使用HTTP/2?

看起来这是不可能的,但我希望有办法做到这一点,否则我需要在每个Web应用程序处理SSL证书,而不仅仅是在负载平衡器。

+0

您希望通过将后端连接设置为http/2来获得什么?没有tls支持http/2,所以无论如何你都必须处理tls。 – JimB

+0

Right @JimB但是这看起来像是一个关于堆栈中TLS可以被卸载的问题 - 它不需要在应用程序服务器上,它可以在前面。 –

+0

@JeffRogers这当然是一个可以工作的配置,但HAProxy还不能说出h2,所以它必须处于'tcp模式',它禁用了很多功能,并且不能再做出任何路由决定。这是你失踪的部分吗? –

回答

3

还是有一些我不知道的解决方法,以便我可以在负载平衡器处继续终止SSL并仍然使用HTTP/2?

如果我对你有帮助,你需要一个支持HTTP/2的负载均衡器,它可以将你的请求代理到你的应用程序。您可以使用nginx。它可以很好地做http2 termination,负载平衡和许多其他的事情。所以可能你可能根本不需要haproxy。但是,如果您需要一些高级功能(如粘性会话),则haproxy非常有用。 Nginx也可以做到,但只能在商业版本中使用。

这里是一篇文章(在谷歌缓存中)如何setup nginx + haproxy

+0

是的,这就是我想要做的。我一直希望继续使用HAProxy,因为我已经熟悉它并且对我来说工作得很好。我会稍后再打开这个问题,看看其他人是否有任何想法,否则就接受。 –

+1

我以为你可以一起使用它们。 Nginx作为一个h2终结者,它只是代理haproxy的任何东西,它做“所有魔法的东西”。 –