关于Chrome不显示http2,而Firefox显示正常
搜索一大堆后发现Chrome 51之后,放弃了对NPN的支持。也就是要求服务端支持ALPN,才能正常的协商至HTTP/2协议。
需要OpenSSL 1.0.2以上版本才支持ALPN。目前自带Openssl 1.0.2的发行版只有Ubuntu 16.04 ,解决方法有
- 升级系统自带的Openssl
- 由于 OpenSSL 是系统基础库,大量其他软件都对它有依赖,如果直接升级系统自带的 OpenSSL,很容易引发各种问题。所以不在考虑之中
- 自行编译,编译 Web Server 时自己指定 OpenSSL 的位置
编译是只需添加--with-openssl=/openssl-1.0.2j,指定Openssl的源码就可以了。分享我制作好的RPM包。
- Openssl 1.0.2 版本:nginx-1.11.5-1.el7.centos.ngx.x86_64-openssl-1.0.2
- Openssl 1.1.0 版本:nginx-1.11.5-1.el7.centos.ngx.x86_64-openssl-1.1.0
RPM制作spec来自https://github.com/BOPOHA/nginx-alpn