2017-02-16 41 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的任何東西,它做「所有魔法的東西」。 –