在Apache防火墙后运行SPDY的Jetty服务器

在Apache防火墙后运行SPDY的Jetty服务器,apache,jetty,spdy,http2,Apache,Jetty,Spdy,Http2,我在Jetty服务器上运行了一个at/mine应用程序,该服务器支持SPDY。它位于用作代理的Apache防火墙后面 位于/mine的应用程序通过Apache上的以下配置规则进行路由: RewriteRule ^/mine$ /mine/ [R,L] ProxyPass /code/ https://jettyserver:9443/mine/ nocanon ProxyPassReverse /mine/ https://jettyserver:9443/mine/ nocanon 因此,当

我在Jetty服务器上运行了一个at/mine应用程序,该服务器支持SPDY。它位于用作代理的Apache防火墙后面

位于/mine的应用程序通过Apache上的以下配置规则进行路由:

RewriteRule ^/mine$ /mine/ [R,L]
ProxyPass /code/ https://jettyserver:9443/mine/ nocanon
ProxyPassReverse /mine/ https://jettyserver:9443/mine/ nocanon
因此,当我点击apache/mine/时,我的浏览器没有与我的应用程序协商SPDY

将mod_spdy添加到代理中是正确的方法,但我目前无法使用我们正在运行的Apache实现这一点


有什么办法可以让它工作吗

对于您想要运行的特定配置,恐怕无法让它与SPDY或HTTP/2一起工作

配置为反向代理的Apache将HTTP/1.1与Jetty进行对话,因此根本无法将SPDY或HTTP/2引入到图片中(考虑到您无法使Apache对话SPDY)

然而,有许多替代解决方案。 让我们把重点放在HTTP/2上,因为SPDY现在正逐渐被淘汰,取而代之的是HTTP/2

第一个也是最简单的解决方案就是完全删除Apache。 您只需将Jetty公开为您的服务器,它就能够向浏览器毫无问题地说出HTTP/2和HTTP/1.1。 Jetty将处理TLS,然后处理HTTP/2或HTTP/1.1

第二个解决方案是把它放在前面,并把它推进码头。 HAProxy将处理TLS并将明文HTTP/2或HTTP/1.1转发给Jetty

这两种解决方案的优点是,您将受益于Jetty的HTTP/2支持以及它的应用程序。 不仅如此,Jetty还为您提供了广泛的Apache功能,如、、等。 对于大多数配置,您不需要Apache,因为Jetty可以做到这一点

第一种解决方案的优点是您只需要配置一台服务器(Jetty),但您可能需要为TLS支付一点费用,因为Jetty使用的JDK实现并不是最有效的

第二种解决方案的优点是,HAProxy可以更高效地完成TLS,并且您可以更轻松地在端口80上运行它。但是,您必须配置两台服务器(HAProxy和Jetty),而不是一台


请查看和,我们通常在其中添加有关HTTP/2、配置和示例的条目。

感谢您的回答,它证实了我的猜测。据我所知,Apache目前还没有关于HTTP/2的报道。在支持HTTP/2之前,我们可以尝试构建mod_spdy源代码,并将其作为一种措施引入Apache2.4代理中。我们也在考虑将代理迁移到Nginx。只是出于好奇,为什么你想让Apache在前面?代理后面有很多服务器,我们的服务器只是其中之一。我们将尝试在Apache2.4上构建mod_spdy,看看这在短期内是否会有所帮助。我认为带mod_spdy的Apache无法在后端(仅在前端)使用spdy,因此您仍然会在Jetty上使用HTTP/1.1,即使有好处,也不会有什么好处。