一、Nginx升级

生产要求,需要对现有Nginx-v1.6.1进行升级,需要保留原有已安装的模块,这里举例升级为Nginx-1.14.0。

  1. 下载新版本Nginx-1.14.0
    http://nginx.org/en/download.htmlMainline为主线开发版本,不建议生产使用,可使用Stable稳定版。如需下载以前的老版本选择Legacy versions
  2. 编译Nginx(只编译不要安装)
    解压下载的Nginx
    tar -zxvf nginx-1.14.0.tar.gz -C /app/ljy/nginx/ #解压下载的新版本cd /app/ljy/nginx/nginx-1.14.0/查看旧Nginx的版本及现有的模块
    ./nginx -V
[mall@bj-ecs-xhm-4f03-b2-hs22-cscs-02 sbin]$ ./nginx -V
nginx version: nginx/1.6.1
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
TLS SNI support disabled
configure arguments: --prefix=../nginx-new --add-module=./modules/taobao-nginx-http-concat --with-http_stub_status_module --add-module=./modules/ngx_devel_kit-0.2.19 --add-module=./modules/set-misc-nginx-module-0.24 --add-module=./modules/encrypted-session-nginx-module --add-module=./modules/echo-nginx-module --add-module=./modules/lua-nginx-module-0.9.4 --add-module=./modules/memc-nginx-module-0.15 --add-module=./modules/agentzh-srcache-nginx-module-10587a1 --add-module=./modules/ngx_http_redis-0.3.6 --with-http_ssl_module --with-http_gzip_static_module --with-http_sub_module --add-module=./modules/nginx-accesskey-2.0.3 --add-module=./modules/nginx_tcp_proxy_module-0.4.5 --add-module=./modules/naxsi-0.53-2/naxsi_src

开始configure配置编译:

先将modules模块库拷贝至/app/ljy/nginx/nginx-1.14.0/下,执行./configure的时候要指定模块所在的位置,然后执行下面的编译配置命令./configure,所需各个模块可自行下载,这里面是已经下载好的,包含了常用的Nginx模块,如下图:

nginx 升级 openssl 模块 nginx 版本升级_Nginx

./configure --prefix=../nginx-new --add-module=./modules/taobao-nginx-http-concat --with-http_stub_status_module --add-module=./modules/ngx_devel_kit-0.2.19 --add-module=./modules/set-misc-nginx-module-0.24 --add-module=./modules/encrypted-session-nginx-module --add-module=./modules/echo-nginx-module --add-module=./modules/lua-nginx-module-0.10.9 --add-module=./modules/memc-nginx-module-0.18 --add-module=./modules/agentzh-srcache-nginx-module-10587a1 --add-module=./modules/ngx_http_redis-0.3.6 --with-http_ssl_module --with-http_gzip_static_module --with-http_sub_module --add-module=./modules/nginx-accesskey-2.0.4 --add-module=./modules/naxsi-0.53-2/naxsi_src

为了防止目标主机没有Lua库的支持,所以,编译的时候可将Lua支持库编译进去。执行./configure后进入objs目录,编辑Makefile文件,替换-Wl,-E -lpthread -lcrypt /app/ljy/nginx/nginx-1.14.0/modules/LuaJIT-2.0.5/src/libluajit.a -lm -lpcre -lssl -lcrypto -ldl -lz \这一行。

nginx 升级 openssl 模块 nginx 版本升级_nginx_02

下面开始编译:

make

不要make install!!!以免覆盖原有nginx!!!

  1. 将objs目录下编译好的Nginx二进制文件拷贝至现有Nginx安装目录的sbin下(先备份旧Nginx启动文件),停掉现有Nginx进程,使用新的Nginx启动,查看升级后版本。
    使用下面的命令来停止旧版本的Nginx,由新版本来接替,该命令会处理完老进程的所有请求后关闭所有连接并停止Nginx,查看Nginx日志目录会生成一个nginx.pid.oldbin文件,用来存放旧版本Nginx 的pid。
kill -USR2 `cat /app/ljy/nginx/ecsmall/logs/nginx.pid`

二、为现有Nginx添加模块

为现有的Nginx添加一个新的模块,比如添加Mongodb的GridFS 文件系统支持模块nginx-gridfs。注意:要找一个与现有Nginx版本相同的Nginx来编译。

  1. 先准备要添加的模块,并解压至指定目录。
  2. 同上Nginx升级操作的第2步,查看现有Nginx已安装的模块,然后配置编译的时候加入需要添加的模块,重新编译,这里举例加入了--add-module=./modules/nginx-gridfs模块。开始./configure,完成之后参考上面的步骤加入Lua库,然后make进行编译,记得不要make install,否则会覆盖原Nginx的!!!
  3. 编译完成后,到objs目录下,使用新的Nginx二进制文件来替换现有Nginx,替换前记得先备份下原有的Nginx以免出现问题。参考上面第3步,重新启动添加新模块后的Nginx。

备注:

  • Nginx的pid文件在日志logs目录下
  • 低版本的Nginx可以通过打补丁来安装第三方模块nginx_tcp_proxy_module-master以便于支持TCP负载均衡配置(通过打补丁来扩展nginx_tcp_proxy_module模块可参考下面的链接)。而在新版本以后,由于第三方的插件并未进行更新(2018年5月),高版本的Nginx自带有TCP负载均衡配置(stream模块),所以,该插件不能安装在高版本的Nginx上。

参考文档:


http://blog.51cto.com/zhengmingjing/1907775