【问题标题】:net::ERR_SPDY_PROTOCOL_ERROR 200 with proxy servernet::ERR_SPDY_PROTOCOL_ERROR 200 带代理服务器
【发布时间】:2019-06-04 12:10:45
【问题描述】:

在我们的项目中,我们使用了 2 台服务器:1 台作为 PROD API 服务器,1 台作为代理(实际上是使用 nginx)

代理服务器也使用 HTTP/2。在一种情况下,代理可能会从 prod API 服务器获得响应,并用代理替换 PROD 链接,然后将其返回给客户端。

在这种情况下,我们可以捕获“net::ERR_SPDY_PROTOCOL_ERROR 200”错误。我在谷歌上搜索了一些关于这个问题的信息,但看起来这个错误的原因可能很少。

在我的情况下,它仅在我们替换主机时发生(在将其发送到客户端之前修改来自 PROD 的响应)

有人可以描述“net::ERR_SPDY_PROTOCOL_ERROR 200”的实际含义以及避免这种情况的最佳做法吗?

【问题讨论】:

    标签: web nginx proxy http2 spdy


    【解决方案1】:

    HTTP/2 派生自早期的 SPDY 协议,这可能是错误消息根本没有提及 HTTP/2 的原因。

    您可能会看到 ERR_SPDY_PROTOCOL_ERROR 消息的原因之一是来自服务器的 HTTP 标头无效。也许您的代理正在对 making it invalid/malformed 的 HTTP 响应标头进行一些更改?

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

    【讨论】:

    • 感谢您的帮助。在 HTTP/2 禁用后它说内容类型长度不​​匹配错误,实际上 nginx 设置决定了像 MITM-atack 这样的重写过程
    • 我们一发现问题就重新设计了我们的方法,所以我们没有解决长度不匹配的问题
    • 我已经解决了添加“proxy_max_temp_file_size 0;”的问题到 nginx 代理配置。
    【解决方案2】:

    我们今天在使用 docker 镜像运行反向代理服务器时遇到了类似的问题:nginx:1.16.0-alpine。改用nginx:1.16.0后,这个问题解决了。

    【讨论】:

      猜你喜欢
      • 2022-10-21
      • 2018-01-10
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      相关资源
      最近更新 更多