有没有人设法让SPDY在亚马逊ELB背后工作?

Gor*_*rdo 13 load-balancing nginx amazon-web-services spdy

我们一直在使用与spdy模块一起编译的nginx已经有一段时间了,尽管只有草案2的规格对其性能非常满意.

但是,我们现在需要水平扩展并将我们的EC2实例放在Elastic Load Balancer之后.

由于ELB不支持NPN协议,因此我们将监听器设置为以下内容:

SSL 443 - > SSL 443

我们还启用了新的代理协议,如下所述:

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html

使用此配置,一切都完好无损.我们的应用程序在我们的实例中成功地进行了负载均衡.

但是,在运行http://spdycheck.org/时,它会报告未启用SPDY.然而,如果我将spdycheck指向单个实例的弹性IP,它会正确地将SPDY报告为已启用.

任何帮助将不胜感激.

oBa*_*oBa 8

执行SSL - > SSL不会将整个TCP数据包发送到您的Web服务器.AWS使用证书对数据包进行解密并重新加密.您的后端只接收修改后的数据包.可行的选择是将协议更改为TCP,但是您需要针对http标头的nginx代理补丁或更好地工作.

我也有同样的问题,等待AWS在ELB上启用NPN协商,或者nginx在其模块中添加accept-proxy补丁.


小智 6

我们昨晚在https://www.ritani.com上发布了它.你需要一个支持spdy和proxy_protocol的nginx版本.我们在1.6.2.

通过AWS CLI添加并将proxy_protocol附加到ELB. http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html#enable-proxy-protocol-cli

通过该ELB的AWS Web UI,删除任何443个侦听器.添加一个新的侦听器作为TCP 443 - > TCP 443.

在您的nginx配置服务器块中:

listen 443 ssl spdy proxy_protocol;

add_header Alternate-Protocol 443:npn-spdy/3;

all the standard ssl directives...

为了让ocsp装订工作,我不得不使用三个证书.连接my.crt和my.intermediate.crt的标准方法不起作用.我必须按照以下方式将它们分解出来.

ssl_certificate /etc/nginx/ssl/my.crt;

ssl_certificate_key /etc/nginx/ssl/my.private.key;

ssl_trusted_certificate /etc/nginx/ssl/my.intermediate.crt;

最后,交换任何$remote_addrwith的实例$proxy_protocol_addr.$ remote_addr现在是elb,$ proxy_protocol_addr是远程客户端的ip.