客户端 - Nginx HTTP2 - Apache HTTP1.1 似乎违反了 RFC
大家好,我是无能。不知不觉中,我向 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,但不知道是否只能根据需要来做……
这只是昨天发生的事情,所以看来我需要再花些时间慢慢调查👀