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
。
この問題は、それが不可能であり、実装されないことを示しています。