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
在google,baidu上面都搜索了下,发现大家并没有这种问题。于是又各种鼓捣,最终发现了原因
原因如下:
由于我有其他网站还是使用http2.0(因为并没有发现错误),而这些网站和我要回退到1.1的网站在同一台服务器。http2.0网站监听的端口是443http1.1网站监听的端口是443他们都是用了443端口,而又在同一个命名空间。不过由于有http2.0的存在,覆盖了http1.1,也就是说,只要443端口开启了http2.0,那么即使你配置 listen 443;依然使用的http2.0所以我将有http2.0的域名全部换成http1.1,发现解决问题
当然,如果想http1.1和http2.0共存在同一个nginx,那么可以使用不同的端口来区分