遇到问题公司业务需求,某站点需支持http2,通过查阅nginx > 1.9.5 支持http2。于是着手升级nginx版本。

解决问题:


首先做好原nginx的备份。(配置文件conf、应用程序/usr/local/nginx/sbin/nginx 等备份)


1. 下载nginx最新稳定版本。

通过nginx官网查阅,下载了nginx1.10.1版本 (最新稳定版本)

wKiom1f58w7xqinnAAAg35CG2IY436.png-wh_50


2. 查看老版本的编译参数

[root@nginx001 ~]# /usr/local/nginx/sbin/nginx -V

nginx version: nginx/1.7.6

built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) 

TLS SNI support enabled

configure arguments: --prefix=/usr/local/nginx --with-pcre=/mnt/app//pcre-8.36 --with-zlib=/mnt/app//zlib-1.2.8 --add-module=/mnt/app//ngx_cache_purge-2.1 --with-http_perl_module --with-http_ssl_module --with-http_stub_status_module --add-module=/mnt/app//nginx_tcp_proxy_module-master --add-module=/mnt/app//nginx_upstream_check_module-master --add-module=/mnt/app/ngx_req_status


3. 解压nginx1.10.1 版本,并重新编译

  • ngx_cache_purge-2.1 不支持nginx1.10. 故重新下载ngx_cache_purge-2.3.tar.gz(下载地址:http://labs.frickle.com/files/)

  • nginx1.10 已支持tcp代理,故不需要编译参数--add-module=/mnt/app//nginx_tcp_proxy_module-master

  • 并加入http2 支持,--with-http_v2_module

所以正确编译参数:

cd /mnt/app/nginx-1.10.1

./configure --prefix=/usr/local/nginx --with-pcre=/mnt/app/pcre-8.36 --with-zlib=/mnt/app/zlib-1.2.8 --add-module=/mnt/app/ngx_cache_purge-2.3 --with-http_perl_module --with-http_ssl_module --with-http_stub_status_module --with-stream --add-module=/mnt/app/nginx_upstream_check_module-master --with-http_v2_module


make


make install (如果不执行,报错nginx.pm版本号不对。经测试重新安装不会影响原nginx配置文件)


4. 备份并替换老nginx程序

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_1.7.bak

cp /mnt/app/nginx-1.10.1/objs/nginx /usr/local/nginx/sbin/nginx


查看替换之后的程序: 1.10版本

[root@nginx001 ~]# /usr/local/nginx/sbin/nginx -V

nginx version: nginx/1.10.1

built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) 

built with OpenSSL 1.0.1e-fips 11 Feb 2013

TLS SNI support enabled

configure arguments: --prefix=/usr/lcoal/nginx --with-pcre=/mnt/app/pcre-8.36 --with-zlib=/mnt/app/zlib-1.2.8 --add-module=/mnt/app/ngx_cache_purge-2.3 --with-http_perl_module --with-http_ssl_module --with-http_stub_status_module --with-stream --add-module=/mnt/app/nginx_upstream_check_module-master --with-http_realip_module --with-http_v2_module


检查配置文件并重新启动

/usr/local/nginx/sbin/nginx -t

/usr/local/nginx/sbin/nginx -s reload


完成升级nginx版本到1.10.1.