客户端 - Nginx HTTP2 - Apache HTTP1.1 似乎违反了 RFC

1 min

language: ja bn en es hi pt ru zh-cn zh-tw

大家好,我是无能。不知不觉中,我向 Deno 提交的拉取请求被合并了。太棒了!

问题

正如标题所说,如果这违反了 RFC,会发生什么呢?
无法使用 curl

curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)

尽管 HTTP/2 总是要求 HTTPS 通信,但当 Nginx 进行反向代理并与后端 Apache 服务器进行 HTTP 通信时,似乎就会发生这种情况。
解决方法:禁用 HTTP/2
这种愚蠢的……感觉,关于这个问题的讨论似乎在 GitHub 上也时有发生。
我暂时只停止了 HTTP/2。

此外,在这种状态下,MacOS/IOS 浏览器有时无法访问,有时可以,关于解决方案的信息非常少。如果 curl 选项中指定--http1.1,暂时可以解决,但是……

HTTP2 规范

根据 HTTP/2 规范,它既可以用于 HTTP 也可以用于 HTTPS,但浏览器似乎只允许 HTTPS 通信。这是什么情况……

无效的自签名

在后端 Apache 上使用自签名证书进行临时的 HTTPS 通信,并且在后端也
编写了Protocols h2 http/1.1
并使用a2enmod启用了模块,但似乎仍然不行。

HTTP/2 的必要性

比较 HTTP/1.1 和 HTTP/2 下载多张图片的速度
实际上,我确实想好好支持 HTTP/2,但不知道是否只能根据需要来做……
这只是昨天发生的事情,所以看来我需要再花些时间慢慢调查👀

Related Posts