所以我刚刚升级到nginx1.9.5,它支持HTTP2。
我用listen http2替换了所有的listen http2,删除了spdy_headers_comp指令,也删除了add_header Alternate-Protocol 443:npn-spdy/3;
然后我在火狐中打开了我的网站,打开了网络监视器,瞧:Version: HTTP/2.0
但是火狐怎么知道我的网站支持HTTP2呢?在尝试HTTP1.1之前,它总是先尝试通过HTTP2连接吗?
发布于 2015-09-22 16:58:47
浏览器使用名为ALPN的TLS扩展来告诉服务器他们可以说什么协议。浏览器总是发送这个TLS扩展,并且总是同时包含HTTP/2和HTTP/1.1 (也可能包括旧的SPDY协议)。
服务器接收浏览器可以说话的协议列表,如果服务器支持HTTP/2 (如果满足了许多其他条件--特别是关于TLS协议版本和密码套件),服务器决定使用浏览器使用HTTP/2,并再次使用ALPN扩展将选定的协议发送回浏览器。
如果服务器不支持HTTP/2,那么它将发送给浏览器,它只能通过ALPN扩展说HTTP/1.1。
如果服务器不支持ALPN扩展,那么它将不会将其发送到浏览器,浏览器将默认对该服务器使用HTTP/1.1。
https://stackoverflow.com/questions/32721969
复制相似问题