Antworten:
Leider lautet die Antwort: Sie können nicht. Um SPDY bereitstellen zu können, muss Ihr TLS-Terminierungsserver (in diesem Fall der ELB) heute in der Lage sein, SPDY über TLS "Next Protocol Negotiation" (NPN) auszuhandeln. NPN ist eine Erweiterung von TLS und erfordert eine aktuelle Version von OpenSSL oder anderen Bibliotheken. ELB unterstützt keine NPN-Aushandlung.
Die Lösung besteht darin, den gesamten TCP-Stream über ELB auf Ihren Anwendungsserver zu übertragen, der dann den NPN- und TLS-Handshake verarbeiten kann. Jetty kann das tun, oder Sie können ein Tool wie HAProxy verwenden, das jetzt NPN-fähig ist: http://www.igvita.com/2012/10/31/simple-spdy-and-npn-negotiation-with-haproxy/
SPDY wird jetzt auf ELB unter Verwendung von proxy_protocol unterstützt.
Das Einrichten ist etwas umständlich. Sie müssen jedoch die ProxyProtocol-Richtlinie zu Ihrer ELB hinzufügen und die Listener auf TCP 443 -> TCP 443 einstellen
Dadurch wird die Verbindung (zusammen mit dem Proxy-Protokoll-Header) über die ELB unberührt an Ihre Server weitergeleitet.
Nginx hat gerade die Proxy-Protokoll-Unterstützung in Version 1.5.12 hinzugefügt, daher höre ich einfach wie folgt zu:
Hören Sie 443 ssl proxy_protocol spdy
Setzen Sie dann real_ip auf das übergebene proxy_protocol ip und voila, SPDY hinter ELB.
Ich sollte erwähnen, dass dies bedeutet, dass Sie die SSL-Zertifikate auf Ihrem Webserver dekodieren, anstatt ELB wie bei HTTPS-Listenern zu verwenden. Aber für mich ist das in Ordnung.
Es wäre großartig, wenn Amazon bessere Steuerelemente für das Hinzufügen von Richtlinien mithilfe der Web-GUI hinzufügen könnte, da dies über die Befehlszeile schmerzhaft ist.
https://forums.aws.amazon.com/thread.jspa?threadID=90109&start=25&tstart=0