HTTP/2 (原名 HTTP/2.0)即超文本传输协议 2.0,是下一代 HTTP 协议。在开放互联网上 HTTP 2.0 将只用于 https://网址,而 http://网址将继续使用 HTTP/1,目的是在开放互联网上增加使用加密技术,以提供强有力的保护去遏制主动攻击。更多http2 的优势

HTTP/2 要求 Nginx 的版本最低为 1.9.5,低版本没有 http/2 的支持,并报如下错误,所以必须升级 nginx

nginx: [emerg] invalid parameter "http2" in /etc/nginx/conf.d/ssl.conf:2
nginx: configuration file /etc/nginx/nginx.conf test failed

nginx 安装或升级

在 CentOs 系统或者 Red Hat 系统中配置 nginx 的 yum 源

$ vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

如果已经安装,执行 yum clean all && yum update nginx,未安装执行 yum install nginx

执行nginx V得到如下结果

开启 http2

开启 http2 只需要在 conf 文件添加 http2 配置即

server {
listen 443 ssl http2;
...
}

openssl 版本过低也会导致 http2 开启无效,如果版本过低必须更新 openssl 版本

浏览器检测网站是否开启 http2

(function () {
// 保证这个方法只在支持loadTimes的chrome浏览器下执行
if (window.chrome && typeof chrome.loadTimes === "function") {
var loadTimes = window.chrome.loadTimes();
var spdy = loadTimes.wasFetchedViaSpdy;
var info = loadTimes.npnNegotiatedProtocol || loadTimes.connectionInfo;
// 就以 「h2」作为判断标识
if (spdy && /^h2/i.test(info)) {
return console.info("本站点使用了HTTP/2");
}
}
console.warn("本站点没有使用HTTP/2");
})();