2

SSL/NPN はロードバランサー (Haproxy) を介して処理されるため、Jetty でこれを行う必要はありません。

しかし、私がウェブ上で見ることができるすべての例は、SSL/NPN を使用してこれを行う方法のみを示しています。

これが私がこれまでに試みたことです:

Server server = new Server();
HTTPConfiguration httpConfig = .... // set up some additional http config here
PushStrategey push = new ReferrerPushStrategy();
List<ConnectionFactory> factories = new ArrayList<>();
factories.add(new HTTPSPDYServerConnectionFactory(SPDY.V3, httpConfig, push));
factories.add(new HTTPSPDYServerConnectionFactory(SPDY.V2, httpConfig, push));
factories.add(new HTTPConnectionFactory(httpConfig));
ServerConnector connector = new ServerConnector(server, factories.toArray(new ConnectionFactory[factories.size()]));
connector.setPort(port);
server.addConnector(connector);
connector.start();
....

残念ながら、curl やブラウザなどのクライアント経由でサーバーにアクセスしようとすると、何かがおかしいようです。私は何を間違っていますか?

ありがとう

4

1 に答える 1

3

をクリアテキスト SPDY で読み上げるように設定した場合ServerConnector、クライアントもクリアテキスト SPDY で読み上げる必要があります。

またはブラウザのようなクライアントを使用する場合curl、それらは平文の SPDY を話しません。クライアントは、理解されていない HTTP 要求を送信します (サーバーは SPDY を予期します)。これが、接続が「ハング」する理由です。

Chromium/Chrome のみが、ここで--use-spdy=no-ssl説明されているようにパラメーターを使用して、平文の SPDY を読み上げることができるモードを備えています。

したがって、平文の SPDY を使用している場合ServerConnectionFactory、プロトコルのネゴシエーションがないため、ネゴシエートされるプロトコルに基づいて 1 つを選択する方法がないため、複数を構成しても意味がありません。

プロトコル ネゴシエーションは、SSL+NPN を使用する場合にのみ発生します。

ServerConnectionFactoryクリアテキストの SPDY を本当にセットアップしたい場合、コードは基本的に正しいです (不要な multiple を除いて) ServerConnectorこれは、Jetty SPDY テスト スイートでのセットアップ方法の例です。

最後に、SPDY に関するリファレンス ドキュメントも参照してください。

于 2014-03-15T11:11:52.140 に答える