[记录] http2.0无法回退到http1.1

http2.0在图片等加载上面比http1.1快很多,因此,换到了http2.0。不过问题出现了,由于http2.0在兼容性上面并不是非常完整,导致使用http2.0的部分网站会偶发性出现协议失败的现象(几率很小)。而这种不稳定,促使我放弃一些网站的http2.0使用,因此就想换回http1.1,不过却出现http2.0无法回退到http1.1的问题

http2.0配置

server
{
    listen 443 ssl http2; #这样即可
}

于是我回退到http1.1

server
{
    listen 443;
}

不过蛋疼的事情来了,我访问回退的http1.1网站,发现使用的协议依然是http2

《[记录] http2.0无法回退到http1.1》

在google,baidu上面都搜索了下,发现大家并没有这种问题。于是又各种鼓捣,最终发现了原因

原因如下:
由于我有其他网站还是使用http2.0(因为并没有发现错误),而这些网站和我要回退到1.1的网站在同一台服务器。
http2.0网站监听的端口是443
http1.1网站监听的端口是443
他们都是用了443端口,而又在同一个命名空间。不过由于有http2.0的存在,覆盖了http1.1,也就是说,只要443端口开启了http2.0,那么即使你配置 listen 443;依然使用的http2.0

所以我将有http2.0的域名全部换成http1.1,发现解决问题

当然,如果想http1.1和http2.0共存在同一个nginx,那么可以使用不同的端口来区分

    原文作者:青菜
    原文地址: https://segmentfault.com/a/1190000011379185
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞