这篇笔记的背景是 新邮项目的WAF是基于编译安装nginx的
用户要求将nginx版本升级
首先查看现有的nginx版本和状态
查看当前版本:
/usr/local/nginx/sbin/nginx -v
-----------------------------------------------------
查看当前配置:
/usr/local/nginx/sbin/nginx -V
如图照着选项,保持选项一模一样,到下载好的tar.gz包,解压、编译
已下载
解压
进入解压文件的目录
按照原文件编译
./configure --with-http_ssl_module
注意,一般情况下,对新版本的预编译只要照搬原有的参数就好,个别特殊情况。例如:启用了一些第三方的模块
那么要多多注意,类似本次实践中的WAF,ModSecurity就是需要在nginx的预编译一起带上的,否则会报错。
nginx: [emerg] module "/usr/local/nginx/modules/ngx_http_modsecurity_module.so" version 1015005 instead of 1016001 in /usr/local/nginx/conf/nginx.conf:1
从报错可以看出 /usr/local/nginx/modules/ngx_http_modsecurity_module.so 这个东西版本有问题
由于我是后来接手此套环境,在开始时并不知道ngx_http_modsecurity_module.so这个文件是什么,怎么来的
查阅资料,参考编译安装并添加modsecurity模块的教程发现,ngx_http_modsecurity_module.so是需要在预编译nginx的时候就add的模块,只有在预编译的时候add了才会在ojbc目录中伴随nginx生成对应的可用的 ngx_http_modsecurity_module.so
./configure --with-http_ssl_module --add-dynamic-module=../ModSecurity-nginx-master/
预编译完之后,可以发现,当前目录下多了一个objs,
再然后进到objs里面就能看到新的nginx执行文件了
cp /usr/local/sbin/nginx /usr/local/sbin/nginx-bak
mv XX/objs/nginx /usr/local/sbin/nginx
将objs里面的心nginx替换掉原来的老nginx,注意替换前要备份老nginx
最后平滑重启
make upgrade
升完记得回来看版本
nginx -V
- - - - - 2020年7月更新- - - - -
ubuntu系统apt安装的nginx升级方法
添加nginx安装源+apt命令安装
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
vim /etc/apt/sources.list
## 添加源
deb http://nginx.org/packages/ubuntu/ $(ubuntu发行版的代号) nginx
deb-src http://nginx.org/packages/ubuntu/ $(ubuntu发行版的代号) nginx
##举个例子,如下图的版本
#添加源就应该写成
deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/ bionic nginx
完成了之后
apt-get update
apt install nginx