web-dev-qa-db-ja.com

nginxリバースプロキシとバックエンドウェブサーバーの間でHTTP / 2.0を使用する

HTTP/2.0を実行できるバックエンドWebサーバーの前で、nginxをreverse-ssl-proxyとして使用しています。

NginxがHTTP/2.0ではなくHTTP/1.1を介してバックエンドサーバーへのリクエストをプロキシしていることに気付きました。代わりに非暗号化HTTP/2.0接続を使用するようにnginxに指示することは可能ですか?これによりパフォーマンスが向上しますか?

24
S1lentSt0rm

これが見つかりました: https://trac.nginx.org/nginx/ticket/92

近い将来、プロキシモジュールにHTTP/2サポートを実装する予定はありません。

チケットで参照されているメールからの抜粋:

HTTP/2の主な利点は、単一の接続内で多くのリクエストを多重化できることであり、[ほぼ]同時リクエストの数の制限がなくなるため、実装する意味はほとんどありません。あなた自身のバックエンド。さらに、単一のTCP接続が複数の接続の代わりに使用されているため、バックエンドにHTTP/2を使用すると状況がさらに悪化する可能性があります。

26
S1lentSt0rm

残念ながらnginxは から参照されるhttp/2バックエンドサーバーへのプロキシをサポートしていませんhttps://www.nginx.com/blog/http2-module-nginx/#QandA

Q:アップストリーム側でもHTTP/2をサポートしますか、それともクライアント側でのみHTTP/2をサポートしますか?

A:現時点では、クライアント側でのみHTTP/2をサポートしています。 proxy/2でHTTP/2を構成することはできません。 [編集者–この投稿の元のバージョンでは、この文は「proxy_passを使用してHTTP/2を構成できます」と誤って文字起こしされました。混乱を招きましたことをお詫び申し上げます。]

しかし、バックエンド側のHTTP/2のポイントは何ですか?ベンチマークからわかるように、アップストリーム接続などの低レイテンシネットワークのHTTP/2にはそれほどメリットはありません。

また、NGINXにはキープアライブモジュールがあり、キープアライブキャッシュを構成できます。 HTTP/2の主なパフォーマンス上の利点は、追加のハンドシェイクを排除することですが、キープアライブキャッシュを使用してすでにそうしている場合は、アップストリーム側にHTTP/2は必要ありません。

7
tangxinfa