关于Chrome不显示http2,而Firefox显示正常

搜索一大堆后发现Chrome 51之后,放弃了对NPN的支持。也就是要求服务端支持ALPN,才能正常的协商至HTTP/2协议。

参考为什么我们应该尽快支持 ALPN?

需要OpenSSL 1.0.2以上版本才支持ALPN。目前自带Openssl 1.0.2的发行版只有Ubuntu 16.04 ,解决方法有

  1. 升级系统自带的Openssl
  • 由于 OpenSSL 是系统基础库,大量其他软件都对它有依赖,如果直接升级系统自带的 OpenSSL,很容易引发各种问题。所以不在考虑之中
  1. 自行编译,编译 Web Server 时自己指定 OpenSSL 的位置
    编译是只需添加--with-openssl=/openssl-1.0.2j,指定Openssl的源码就可以了。分享我制作好的RPM包。

RPM制作spec来自https://github.com/BOPOHA/nginx-alpn