升级Nginx到1.9.12并开启http2 进入全屏
一、准备工作
昨天把站点从http升级到https
,那么接下来就应该可以尝尝http/2
的味道了!
但是目前站点部署在阿里云
CentOS下,Nginx版本比较低,v1.4.4,所以必须得升级到v1.9.x,索性直接升到最新版得了!
安装之前,先准备好两个目录:
# 下载的源码,放在这个目录下进行编译
mkdir -p /root/source
# 编译后的App,安装到这个目录
mkdir -p /root/server
# 进入源码目录,准备接下来的操作
cd /root/source
二、下载openssl最新版源码
Openssl官方下载页面:这里
# 这里下载1.0.2g
wget http://www.openssl.org/source/openssl-1.0.2g.tar.gz
# 解压,备用
tar zxfv openssl-1.0.2g.tar.gz
三、下载zlib最新版源码
Zlib官方下载页面:这里
# 这里下载1.2.8
wget -O - http://prdownloads.sourceforge.net/libpng/zlib-1.2.8.tar.gz\?download > zlib-1.2.8.tar.gz
# 解压,备用
tar zxfv zlib-1.2.8.tar.gz
四、下载Nginx最新版源码
Nginx官方下载页面:这里
# 这里下载1.9.12
wget http://nginx.org/download/nginx-1.9.12.tar.gz
# 解压
tar zxfv nginx-1.9.12.tar.gz
五、编译Nginx
这里有个原则,就是:
当前低版本的Nginx已有的modules,都需要保留,万一丢了谁,一会儿新版本跑不起来就悲催了!
1、获取当前低版本Nginx的编译参数
# -V参数获取详细信息
/root/server/nginx-1.4.4/sbin/nginx -V
得到结果:
nginx version: nginx/1.4.4
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)
configure arguments: --user=www --group=www --prefix=/root/server/nginx-1.4.4 --with-http_stub_status_module --without-http-cache --with-http_gzip_static_module
2、增加新参数
--with-openssl=/root/source/openssl-1.0.2g --with-pcre --with-zlib=/root/source/zlib-1.2.8 --with-stream --with-stream_ssl_module --with-http_v2_module --with-threads
3、编译&安装
cd nginx-1.9.12
# 编译
./configure --user=www --group=www --prefix=/root/server/nginx-1.9.12 --with-http_stub_status_module --without-http-cache --with-http_gzip_static_module --with-openssl=/root/source/openssl-1.0.2g --with-pcre --with-zlib=/root/source/zlib-1.2.8 --with-stream --with-stream_ssl_module --with-http_v2_module --with-threads
# 安装
make && make install
并没有什么[Error]
之类的错误信息,编译安装成功!
4、新版本测试
# 查看安装后的信息
/root/server/nginx-1.9.12/sbin/nginx -V
# 测试
/root/server/nginx-1.9.12/sbin/nginx -t
放心了,确实成功了!
六、Nginx配置文件移植
即便Nginx版本从1.4.4到1.9.12跨越了那么多,但我基本可以猜到,配置文件肯定没啥特殊的大动作
,所以直接cp
移植,测试即可!
# 从原来的nginx/conf目录移植
cp /root/server/nginx-1.4.4/conf/nginx.conf /root/server/nginx-1.9.12/conf/nginx.conf
cp -r /root/server/nginx-1.4.4/conf/vhost /root/server/nginx-1.9.12/conf/
# 测试
/root/server/nginx-1.9.12/sbin/nginx -t
nginx: the configuration file /root/server/nginx-1.9.12/conf/nginx.conf syntax is ok
nginx: configuration file /root/server/nginx-1.9.12/conf/nginx.conf test is successful
完美,基本无缝移植!
七、启用新版本Nginx
# 温柔的停止老版本nginx,当然,也可以采取暴力的 pkill nginx 方式
service nginx stop
# 启用新版本nginx
/root/server/nginx-1.9.12/sbin/nginx
访问网站 https://www.baidufe.com ,一切正常!可以修改软连了:
# 移除老的软连,建立新的软连
unlink /root/server/nginx && ln -s /root/server/nginx-1.9.12 /root/server/nginx
八、回归正题--开启http2
这一步,就已经变得非常简单了,修改nginx/conf/vhosts/baidufe.conf
即可:
server {
listen 443 ssl http2;
server_name baidufe.com www.baidufe.com;
...
}
其实,也就是直接在listen 443 ssl
后面增加http2
即可!然后nginx reload
,搞定!
九、网站http2验证
安装一个chrome扩展:HTTP/2 and SPDY indicator
进入 https://www.baidufe.com 刷新,右上角HTTP/2 and SPDY indicator
图标变蓝色了,验证通过!
当然,还可以通过curl
的方式来检测,但是前提条件是,curl的版本得足够新!
curl --http2 -I https://www.baidufe.com
至此,大功告成!