没安装的需要先把编译环境装好,也可以使用apt-get安装。pcre的版本最好是8.几的版本,不要高于8,不然到时候会报错。
yum install -y gcc gcc-c++ pcre-devel openssl openssl-devel
下载 nginx 源码,启用 http2 需要 nginx 的版本为1.9.0以上。这里使用了1.10.2的Stable版本。
cd /usr/local/src
wget http://nginx.org/download/nginx-1.10.2.tar.gz
tar -zxf nginx-1.10.2.tar.gz
下载 SSL 源码,这里使用 LibreSSL(LibreSSL 是 OpenSSL 加密软件库的一个分支,为一个安全套接层(SSL)和传输层安全(TLS)协议的开源实现。在 OpenSSL 爆出心脏出血安全漏洞之后,一些 OpenBSD 开发者于2014年4月创立了 LibreSSL,目标是重构 OpenSSL 的代码,以提供一个更安全的替代品。LibreSSL 复刻自 OpenSSL 库的1.0.1g分支,它将遵循其他 OpenBSD 项目所使用的安全指导原则。)
cd /usr/local/src
wget https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.4.2.tar.gz
tar -xzvf libressl-2.4.2.tar.gz
编译 nginx,--with-openssl 的路径最好是绝对路径,不然 make 的时候会报错提示你没有找到 .openssl 这个目录。
./configure --with-openssl=/usr/local/src/libressl-2.4.2 --with-http_v2_module --with-http_ssl_module
make
make install
将 nginx 服务先停止,再把刚刚编译过的文件 copy 到原来的 nginx 安装目录,./configure 没有指定 --prefix 的话默认安装在 /usr/local/nginx
nginx -s stop
cd /usr/local/nginx/sbin
cp nginx /usr/sbin/nginx
nginx -v
到这里nginx -v输出: nginx version: nginx/1.10.2 则表示成功升级了。
然后再来配置 nginx confg, 在 listen 加上 http2 即可:
server {
listen 443 ssl http2;
...
}
重启一下:nginx -s reload
,遇到 pid 丢失问题执行 sudo nginx
可以解决。
最后检查是否启用了 http2 可以使用 Chrome 查看,在标签栏输入 chrome://net-internals/#http2
,右侧表格有出现你的网站域名则表示成功了。