HTTP/2.0を実行できるバックエンドWebサーバーの前で、nginxをreverse-ssl-proxyとして使用しています。
NginxがHTTP/2.0ではなくHTTP/1.1を介してバックエンドサーバーへのリクエストをプロキシしていることに気付きました。代わりに非暗号化HTTP/2.0接続を使用するようにnginxに指示することは可能ですか?これによりパフォーマンスが向上しますか?
これが見つかりました: https://trac.nginx.org/nginx/ticket/92
近い将来、プロキシモジュールにHTTP/2サポートを実装する予定はありません。
チケットで参照されているメールからの抜粋:
HTTP/2の主な利点は、単一の接続内で多くのリクエストを多重化できることであり、[ほぼ]同時リクエストの数の制限がなくなるため、実装する意味はほとんどありません。あなた自身のバックエンド。さらに、単一のTCP接続が複数の接続の代わりに使用されているため、バックエンドにHTTP/2を使用すると状況がさらに悪化する可能性があります。
残念ながら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は必要ありません。