web-dev-qa-db-ja.com

AmazonのELBの背後にあるJettyでSPDYをセットアップするにはどうすればよいですか?

SPDYをデプロイしたいのですが、AmazonのELB TCPルーティングを使用しています。ELBは安全な接続も処理します。これを桟橋側でどのように構成できますか?

7
arturnt

残念ながら、答えは次のとおりです。できません。現在、SPDYを展開するには、TLSターミネーションサーバー(この場合はELB)がTLS「NextProtocolNegotiation」(NPN)を介してSPDYをネゴシエートできる必要があります。 NPNはTLSの拡張であり、OpenSSLまたは他のライブラリの最新バージョンが必要です。ELBはNPNネゴシエーションをサポートしていません。

解決策は、TCPストリーム全体をELBを介してアプリケーションサーバーにプロキシすることです。アプリケーションサーバーは、NPNおよびTLSハンドシェイクを処理できます。Jettyはそれを実行できます。または、HAProxyなどのツールを使用できます。これは現在NPN対応です: http://www.igvita.com/2012/10/31/simple-spdy-and-npn-negotiation-with-haproxy/

7
igrigorik

SPDYは、proxy_protocolを使用してELBでサポートされるようになりました。

設定は少し面倒ですが、ELBにProxyProtocolポリシーを追加し、リスナーをTCP 443-> TCP 443に設定する必要があります。

これにより、接続は(プロキシプロトコルヘッダーとともに)ELBを介してそのままサーバーに渡されます。

Nginxはバージョン1.5.12でプロキシプロトコルのサポートを追加したばかりなので、次のように聞きます。

443 ssl proxy_protocolspdyをリッスンします

次に、real_ipを、渡されたproxy_protocol ipとvoila、ELBの背後にあるSPDYに設定します。

これは、HTTPSリスナーの場合のようにELBを使用するのではなく、WebサーバーでSSL証明書をデコードすることを意味します。しかし、私にとってはこれで問題ありません。

コマンドラインから行うのは面倒なので、AmazonがWebGUIを使用してポリシーを追加するためのより良いコントロールを追加できれば素晴らしいと思います。

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

4
Mike Averto