Nginx-proxyとnginx-serverのdockerコンテナを用意しました。
_client browser < > nginx-proxy
_は、proxy_passを介したhttp2および443です。
_nginx-proxy < > nginx-server
_はhttp1ですが、http2に移動したいのですが、SSLを使用していません。どちらも同じサーバー上にあるため、トラフィックを暗号化するメリットはありません。
私はnginxドキュメントを読んで、彼らはそれがsslなしでhttp2をサポートすると言っています。そのため、nginx-server vhostのlistenディレクティブに_80 http2;
_を追加しました。
ただし、ブラウザはWebサイトを表示する代わりに、次の内容のファイルをダウンロードします。
_0000 1204 0000 0000 0000 0300 0000 8000
0400 0000 0000 0500 ffff ff00 0004 0800
0000 0000 7fff 0000 0000 0807 0000 0000
0000 0000 0000 0000 01
_
それはひどく この問題 のように見えますが、私のものは_browser <> nginx
_の問題ではなく_nginx <> nginx
_の問題です。 nginxがsslなしでhttp2をサポートしているとドキュメントが言うので、それは存在すべきではありません。
16進ダンプが_malformed packet
_と言うので、nginx-proxyにバックエンドnginx-serverがhttp2を話すことを理解させるにはどうすればよいですか。
この問題 は不可能であり、実装されないことを示しています。
同じサーバー上のソフトウェア間のレイテンシは非常に低いため、これを実行するメリットは最小限になります。それが非常に難しいか不可能であることを考えると、私はこれにあなたの時間を費やさないでしょう。