圖文詳解Nginx版本平滑升級(jí)方案
背景:
由于負(fù)載均衡測(cè)試服務(wù)器中nginx版本過低,存在安全漏洞,查詢相關(guān)修復(fù)漏洞資料,需要采取nginx版本升級(jí)形式對(duì)漏洞進(jìn)行修復(fù)。
Nginx平滑升級(jí)方案
1、案例采用版本介紹
舊版本 nginx-1.12.2.tar.gz
新版本 nginx-1.20.1.tar.gz
2、nginx-1.12.2版本為當(dāng)前運(yùn)行版本
設(shè)置端口8080和對(duì)主頁index.html進(jìn)行修改,后續(xù)進(jìn)行平滑升級(jí)后,依然可以對(duì)其訪問。
3、解壓新版本 nginx-1.20.1.tar.gz編譯安裝至舊版本nginx-1.12.2目錄下,運(yùn)行原有nginx.conf配置文件,執(zhí)行如下
./configure --prefix=/usr/local/nginx-1.12.2 --conf-path=/usr/local/nginx-1.12.2/nginx.conf --pid-path=/usr/local/nginx-1.12.2/nginx.pid --user=ngadm --group=ngadm --with-http_stub_status_module --without-http_rewrite_module make && make install
4、完成后1.20.1版本會(huì)自動(dòng)在原sbin目錄下生產(chǎn)新的nginx二進(jìn)制文件,舊的nginx會(huì)自動(dòng)被替換成nginx.old
5、平滑升級(jí)
Nginx對(duì)進(jìn)程的控制能力非常強(qiáng)大,可以通過信號(hào)指令控制進(jìn)程。常用的信號(hào)有:
- -QUIT,表處理完當(dāng)前請(qǐng)求后,關(guān)閉進(jìn)程。
- -HUP,表示重新加載配置,也就是關(guān)閉原有的進(jìn)程,并開啟新的工作進(jìn)程。此操作不會(huì)中斷用戶的訪問請(qǐng)求,因此可以通過此信號(hào)平滑的重啟Nginx。
- -USR2,用于平滑升級(jí)可執(zhí)行程序。
- -WINCH,從容關(guān)閉工作進(jìn)程。
根據(jù)nginx進(jìn)程控制信號(hào),執(zhí)行如下:
kill -USR2 38323(舊進(jìn)程PID為38323) ps -ef |grep nginx
切換為新的master進(jìn)程,關(guān)閉舊的work進(jìn)程,注意此時(shí)舊的master進(jìn)程依然存在,執(zhí)行如下:
kill –WINCH 38323 (舊進(jìn)程PID為38323) ps -ef |grep nginx
檢查此時(shí)版本
sbin/nginx -v
已平滑升級(jí)成功。
注意:此時(shí)新版本nginx的masterPID為41063,同時(shí)也存在舊版本的master進(jìn)程(舊進(jìn)程PID為38323),若無需再回退時(shí)操作,可執(zhí)行舊進(jìn)程退出操作,執(zhí)行如下:
kill –QUIT 38323
回退步驟
關(guān)于回退操作分為兩類:
1、事前對(duì)舊版本nginx進(jìn)行備份,若出現(xiàn)問題,直接將舊版本重新拷貝會(huì)/usr/local目錄下,重啟nginx舊版本操作,執(zhí)行如下:
killall nginx cp nginx-1.12.2.bak nginx-1.12.2 /usr/local/nginx-1.12.2/sbin/nginx –c /usr/local/nginx-1.12.2/nginx.conf 檢查nginx狀態(tài) ps –ef |grep nginx
2、在新版本nginx的master進(jìn)程和舊版本的master進(jìn)程同時(shí)存在時(shí),執(zhí)行如下:
切換回舊版本的master進(jìn)程
kill -HUP 舊masterPID
關(guān)閉新版本nginx的master進(jìn)程,并將原sbin目錄下的nginx.old(舊版本nginx二進(jìn)制文件)重新改回nginx,以便管理nginx。
kill -WINCH 新masterPID kill -QUIT 新masterPID cp /usr/local/nginx-1.12.2/sbin/nginx.old /usr/local/nginx-1.12.2/sbin/nginx
再次確認(rèn)此時(shí)nginx版本已退回原版本
sbin/nginx -v
總結(jié)
到此這篇關(guān)于Nginx版本平滑升級(jí)方案的文章就介紹到這了,更多相關(guān)Nginx版本平滑升級(jí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx配置SSL證書出現(xiàn)PEM_read_bio_PrivateKey() failed錯(cuò)誤解決
在配置GoDaddy的SSL證書并啟動(dòng)Nginx時(shí),可能遇到由于證書密鑰文件編碼問題導(dǎo)致的啟動(dòng)失敗,具體表現(xiàn)為nginx報(bào)錯(cuò):PEM_read_bio_PrivateKey() failed,本文就來介紹一下,感興趣的可以了解學(xué)習(xí)2024-10-10Windows下用Nginx代理Django安裝配置實(shí)例
這篇文章主要介紹了Windows下用Nginx代理Django安裝配置實(shí)例,本文講解了安裝djanjo、用djanjo生成簡(jiǎn)單web頁面、用nginx進(jìn)行代理等內(nèi)容,需要的朋友可以參考下2015-03-03Windows系統(tǒng)中Nginx下載安裝部署教程(實(shí)測(cè)有效)
Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是一個(gè)IMAP/POP3/SMTP代理服務(wù)器,下面這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)中Nginx下載安裝部署的相關(guān)資料,需要的朋友可以參考下2024-08-08Nginx 如何部署指定文件夾下的項(xiàng)目(本地測(cè)試)
這篇文章主要介紹了Nginx 如何部署指定文件夾下的項(xiàng)目(本地測(cè)試),分為配置vue.config.js,指定生成環(huán)境的包,配置路由模式為hash(history模式刷新后,找不到頁面),本文講解的非常詳細(xì),需要的朋友可以參考下2024-01-01詳解nginx實(shí)現(xiàn)ssl反向代理實(shí)戰(zhàn)
本篇文章主要介紹了nginx實(shí)現(xiàn)ssl反向代理實(shí)戰(zhàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01Nginx四層負(fù)載均衡的實(shí)現(xiàn)示例
Nginx?不支持傳統(tǒng)的四層負(fù)載均衡,但可以通過stream模塊配合TCP實(shí)現(xiàn)類似的功能,本文主要介紹了Nginx四層負(fù)載均衡的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04