net::ERR_SPDY_PROTOCOL_ERROR 200 with proxy server 使用代理服务器时出现SPDY协议错误的问题。

3
在我们的项目中,我们使用了两台服务器:一台作为PROD API服务器,另一台作为代理(实际上使用的是nginx)。
代理服务器也使用HTTP/2。在某种情况下,代理可能会从PROD API服务器获取响应,并将PROD链接替换为代理链接,然后将其返回给客户端。
在这种情况下,我们可能会遇到“net::ERR_SPDY_PROTOCOL_ERROR 200”错误。我对这个问题进行了一些搜索,但看起来可能有几个原因导致这个错误。
在我的情况下,只有当我们替换主机(在将其发送到客户端之前修改PROD的响应)时才会出现这种情况。
有人能描述一下“net::ERR_SPDY_PROTOCOL_ERROR 200”实际上意味着什么,以及避免这种错误的最佳实践吗?
2个回答

3

HTTP/2源于早期的SPDY协议,这可能是为什么错误消息根本没有提到HTTP/2的原因。

你看到ERR_SPDY_PROTOCOL_ERROR消息的原因之一是来自服务器的无效HTTP头。也许你的代理正在对HTTP响应头进行某些更改,从而使其无效/格式不正确

尝试在代理服务器上禁用HTTP/2,看看错误是否消失。如果是,检查响应头并确保它们是有效的。我怀疑你的代理服务器正在扭曲响应。


感谢您的帮助。在禁用HTTP/2之后,它显示内容类型长度不匹配错误,实际上是nginx设置决定了重写过程,就像MITM攻击一样。 - Eugene Rotar
一旦我们发现了问题,我们重新设计了方法,因此我们没有解决长度不匹配的问题。 - Eugene Rotar
我已经解决了这个问题,将“proxy_max_temp_file_size 0;”添加到nginx代理配置中。 - LetItRock

2
今天我们在使用docker镜像nginx:1.16.0-alpine运行反向代理服务器时遇到了类似的问题。更改为使用nginx:1.16.0后,此问题得以解决。"最初的回答"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接