Http2、SSLターミネーションを備えた1つのプロキシ、および異なるサブドメイン用の複数の異なるバックエンドを使用する方法を探しています。
私は この問題の説明 を見つけました。そして私はhaproxyで機能する解決策を探しています。これはおそらく他のプロキシでも機能します。
The problem you ran into is caused by "Connection coalescing".
For example, if a browser (Chrome/Firefox) connects to an http2 server "a.example.org" which resolves to 192.168.2.1 and later connects to "b.example.org", it checks 2 things:
1. Do DNS entries match? This will always be the case since our proxy only has one IP.
2. Has a.example.org provided a certificate that also matches b.example.org. (e.g. wildcard or multidomain cert).
If both are the case it will not initiate a second connection but instead reuse the existing connection to Host a.example.org.
This is fine in theory but due to the use of sniproxy a.example.org is unable to handle b.example.org because they are in reality, two different hosts.
One way the solve this should be the use of different certs that only cover a single domain (e.g. no wildcard).
I have not tested it but I think it might work.
プロキシ「haproxy」に既存の接続をチェックさせ、ドメイン、サブドメインが接続が実際に送信されているバックエンドに対して正しいことを確認する方法はありますか?.
強制的にタイムアウト値を変更してみました
option http-server-close
option forceclose
私たちが望むように機能するものはありません。 subA.domain.comへの接続とその後のsubB.domain.comへの接続は、2つの異なるバックエンドで設定されているため、失敗します。ブラウザは、2つの異なるバックエンドに対して同じ接続を再開します。
答えではなく、単なる回避策です。 WebサーバーでHTTP2を無効にする必要があります。その後、すべてが再び機能します。時々、新しい標準は古いものを壊します。