web-dev-qa-db-ja.com

net :: ERR_SPDY_PROTOCOL_ERROR 200(プロキシサーバーあり)

このプロジェクトでは、2つのサーバーを使用しています。1つはPROD APIサーバーとして、もう1つはプロキシーとして使用します(実際にはnginxが使用されます)。

プロキシサーバーもHTTP/2を使用します。 1つのシナリオでは、プロキシはprod APIサーバーから応答を取得し、PRODリンクをプロキシのものに置き換えて、それをクライアントに返します。

その場合、 "net :: ERR_SPDY_PROTOCOL_ERROR 2"エラーをキャッチできます。私はその問題について少しグーグルで調べました、しかしそれはそのエラーのいくつかの理由であるかもしれないようです。

私の場合、ホストを置き換えるときにのみ発生します(クライアントに送信する前にPRODからの応答を変更します)

誰かが実際に "net :: ERR_SPDY_PROTOCOL_ERROR 2"が何を意味するか、そしておそらくそれを回避するためのベストプラクティスについて説明できますか?

3
Eugene Rotar

HTTP/2は以前の[〜#〜] spdy [〜#〜]プロトコル、それがおそらくエラーメッセージがHTTP/2についてまったく言及しない理由です。

ERR_SPDY_PROTOCOL_ERRORメッセージが表示される理由の1つは、サーバーからの無効なHTTPヘッダーです。おそらくあなたのプロキシは、HTTP応答ヘッダーに何らかの変更を加えているため、 それを無効/不正な形式にしています

プロキシサーバーでHTTP/2を無効にして、エラーが解消されるかどうかを確認してください。存在する場合は、応答ヘッダーを調べて、それらが有効であることを確認してください。プロキシサーバーが応答を不正に処理しているようです。

3
CFL_Jeff

Docker image:nginx:1.16.0-Alpineを使用してリバースプロキシサーバーを実行すると、今日同様の問題が発生しました。 nginx:1.16.0を使用するように変更した後、この問題は解決されました。

2
Yao