![如何在 Amazon ELB 后面使用 Jetty 设置 SPDY?](https://linux22.com/image/797280/%E5%A6%82%E4%BD%95%E5%9C%A8%20Amazon%20ELB%20%E5%90%8E%E9%9D%A2%E4%BD%BF%E7%94%A8%20Jetty%20%E8%AE%BE%E7%BD%AE%20SPDY%EF%BC%9F.png)
我想部署 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