2016-08-02 4 views
2

これまでのチュートリアルでは、サーバー上でSSLを有効にしてHTTP/2をサポートする必要があることがわかりました。リバースプロキシの背後にあるHTTP/2

バックエンドのTomcat/Jettyサーバーの前にnginxがあり、バックエンドでHTTP/2を有効にする価値はありますが、そこにHTTPSを設定する必要があります過剰なものになる。

HTTPSはセキュリティ上の必要はありません(nginxのみが公開されています)。操作上の面では少し面倒です。バックエンドサーバーを実行する各Dockerコンテナに証明書を追加する必要があります。

HTTP/2サポートを提供する方法(または少なくとも類似のパフォーマンス)はありませんか?

+0

>ここまでのチュートリアルでは、サーバー上でSSLを有効にしてHTTP/2をサポートする必要があることがわかりました。 おそらく、その理由はブラウザがsslでhttp/2しかサポートしていないからです。http://caniuse.com/#feat=http2(#2の注釈を参照) –

答えて

3

HTTP/2を完全に話す必要はありません。

HTTP/2は、クライアント - > Nginx接続に影響するレイテンシの問題を主に解決します。サーバからサーバへの接続(NginxからTomcat/Jettyなど)はおそらく待ち時間が短くなり、HTTP/2からの取得が少なくなります。

NginxでHTTPSとHTTP/2を有効にしてから、HTTP/1.1とTomcat/Jettyの通信を続けます。

また、ネットワークの端でHTTP/2のみを使用している場合は、すべてがすべてHTTP/2(Nginx proxy_passディレクティブとTomcat/Jetty)をサポートしているかどうかは問題になりません。

5

典型的な設定は、HAProxyをJettyの前に置き、HAProxyがTLSとJettyをオフロードしてクリアテキストのHTTP/2を話すように設定することです。

この設定では、効率的なTLSオフロード(OpenSSL経由のHAProxyによって行われる)の利点が得られ、完全なエンドツーエンドのHTTP/2通信の利点が得られます。

特に、後者の場合、JettyはHTTP/2経由でコンテンツをプッシュできます。バックエンド通信がHTTP/1.1の場合は不可能です。

その他の利点としては、リソースの使用量が少なく、変換手順が少なくて済み(HTTP/2からHTTP/1.1およびviceversaに変換する必要はありません)、アプリケーションに至るまでストリームをリセットするなどのHTTP/。 チェーン内にHTTP/1.1への変換がある場合、これらの利点はどれも有効になりません。

NginxがJettyのリバースプロキシとしてのみ使用されている場合は、何のメリットもありません。実際には、システムを低速化してHTTP/1.1に変換し、HTTP/2に戻す必要があります。

HAProxyは変換が一切行われないので、効率的です.HTTP/1.1に関してもたらされるすべての利点を備えた完全なHTTP/2スタックが可能です。

+0

TLSオフロードにnginxを使用することは可能ですか? – sfThomas

+0

面白い!しかし、HAProxyがSSLを終了すると、おそらくJettyに新しいHTTP/2接続が設定されます。 2つの異なるHTTP/2接続ですべての機能(プッシュ、ストリームのリセットなど)を使用できますか?もしそうなら、セットアップはとても良いようです! –

+0

@BazzaDPはい、可能です。これはhttps://webtide.comとhttps://cometd.orgを提供するために使用する設定です。 HAProxyは、復号化したバイトをバックエンドに転送するだけで、HTTP/2バイトであることは知らない。バックエンドのJettyはクリアテキストHTTP/2を提供し、Jettyの高度なHTTP/2プッシュ機能を利用します。私は、HAProxyとJettyの設定[here](https://webtide.com/http2-with-haproxy-and-jetty/)について詳しく説明しました。 – sbordet

関連する問題