#没有nginx源码包的可官网重新下载“对应版本”的源码包
#download site:http://nginx.org/en/download.html
#第三方模块补丁包推荐github下载,注意与“nginx版本”相一致
#如阿里的自检模块nginx_upstream_check_module-master,download site:https://github.com/yaoweibin/nginx_upstream_check_module
#查看nginx版本号
sudo nginx -v
sudo cd nginx源码根路径
#注意补丁包的存放位置,安装后尽量不要删除(养成良好的文件管理习惯,方便后期再使用。具体能否删除,搞明白diff和patch你就有答案了)
#使用p1是因为补丁包基本都是从根路径开始的,现在进入了根路径,应该排除根路径
sudo patch -p1 <./nginx_upstream_check_module-master/check_1.16.1+.patch
#查看nginx配置信息
sudo nginx -V
#将新模块加入配置信息 --add-module=/www/server/nginx/src/nginx_upstream_check_module-master
sudo ./configure --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-http_v2_module --add-module=/www/server/nginx/src/nginx_upstream_check_module-master
#只编译,不安装,否则原先安装的模块被覆盖
sudo make
#备份老版nginx
sudo cp /www/server/nginx/sbin/nginx /www/server/nginx/sbin/nginx_bak
#替换旧版nginx
sudo cp -f ./objs/nginx /www/server/nginx/sbin/
#查找nginx进程文件
sudo find / -name nginx.pid
#平滑升级新版本,新旧版本同时运行
sudo kill -USR2 `cat /www/server/nginx/logs/nginx.pid`
#确认新版本进程启动:出现.oldbin的文件
sudo ll /www/server/nginx/logs/
#线程平滑转移到新版本
sudo kill -WINCH `cat /www/server/nginx/logs/nginx.pid.oldbin`
#关闭旧版本
sudo kill -QUIT `cat /www/server/nginx/logs/nginx.pid.oldbin`
#nginx_upstream_check_module-master心跳检测,新手建议使用tcp协议。单纯检测tcp握手情况,使用简便。
#http协议需要被检测应用中有相应的基于http协议的检测接口,且配置较复杂,否则会出现检测失败,节点被踢掉,服务停止对外访问的风险
#tcp、http各有优劣,根据实际情况择优选择
nginx不停服务安装新模块,以nginx_upstream_check_module-master为例
于 2023-08-30 18:27:43 首次发布