不自重者,取辱。不自长者,取祸。不自满者,受益。不自足者,博闻。
升级Nginx到1.9.12并开启http2 进入全屏
line

一、准备工作

昨天把站点从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

至此,大功告成!

趣店(原趣分期)技术学院
重点关注技术架构、服务化、优秀工具、自动化平台、开发全流程一体化解决方案、新人培养、工程师进阶之道等方面
这里环境优雅、氛围年轻、主要是福利还多,还等什么?我们敞开技术的大门,欢迎各种工程师加入!

评论区域

line
  • Alien 2016-03-24 13:13:59 回复
    回复 前端小武 : 给你点个赞!
    前端小武 said:
    已升~
  • 前端小武 2016-03-18 19:01:10 回复
    已升~