如何在 Amazon ELB 后面使用 Jetty 设置 SPDY?

如何在 Amazon ELB 后面使用 Jetty 设置 SPDY?

我想部署 SPDY,但我使用 Amazon 的 ELB TCP 路由。ELB 还为我们处理安全连接。如何在 Jetty 端配置它?

答案1

不幸的是,答案是:你不能。今天,为了部署 SPDY,你的 TLS 终止服务器(在本例中是 ELB)需要能够通过 TLS“下一个协议协商”(NPN)协商 SPDY。NPN 是 TLS 的扩展,需要最新版本的 OpenSSL 或其他库。ELB 不支持 NPN 协商。

解决方案是通过 ELB 将整个 TCP 流代理到您的应用服务器,然后该服务器可以处理 NPN 和 TLS 握手。Jetty 可以做到这一点,或者您可以使用 HAProxy 之类的工具,它现在支持 NPN:http://www.igvita.com/2012/10/31/simple-spdy-and-npn-negotiation-with-haproxy/

答案2

现在,ELB 可以使用 proxy_protocol 支持 SPDY。

不过设置起来有点麻烦,你需要将 ProxyProtocol 策略添加到 ELB,并将侦听器设置为 TCP 443 -> TCP 443

这会将连接(连同代理协议标头)通过 ELB 原封不动地传递到您的服务器。

Nginx 在 1.5.12 版本中刚刚添加了代理协议支持,因此我简单听如下:

监听 443 ssl 代理协议 spdy

然后将 real_ip 设置为通过的 proxy_protocol ip,这样 SPDY 就在 ELB 后面了。

我应该提到,这意味着您需要在 Web 服务器上解码 SSL 证书,而不是像使用 HTTPS 侦听器那样使用 ELB。但对我来说,这没问题。

如果亚马逊可以添加更好的控制来使用 Web GUI 添加策略,那就太好了,因为通过命令行执行此操作很麻烦。

https://forums.aws.amazon.com/thread.jspa?threadID=90109&start=25&tstart=0

相关内容