nginx-proxyとnginx-serverのdockerコンテナがあります。
client browser < > nginx-proxy proxy_passを介したhttp2および443です。
nginx-proxy < > nginx-server はhttp1であり、http2に移動したいのですが、SSLを使用しません。これらは両方とも同じサーバー上にあるため、トラフィックを暗号化するメリットはありません。
私はnginxドキュメントを読んで、彼らはそれがsslなしでhttp2をサポートすると言っています。そのため80 http2;、nginx-server vhostのlistenディレクティブに追加しました。
ただし、ブラウザは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をサポートしているとドキュメントが言っているので、それは存在すべきではありません。
バックエンドのnginx-serverがhttp2を話すことをnginx-proxyに理解させるにはどうすればよいですか。16進ダンプが言うので、それが問題だと思いますmalformed packet。
この問題は、それが不可能であり、実装されないことを示しています。