網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
Nginx 介紹
Nginx 是一個(gè)高性能的 Web 服務(wù)器,從 2001 年發(fā)展至今,由于 Nginx 對(duì)硬件和操作系統(tǒng)內(nèi)核特性的深度挖掘,使得在保持高并發(fā)的同時(shí)還能夠保持高吞吐量。Nginx 還采用了模塊設(shè)計(jì),有大量的第三方模塊可以擴(kuò)展 Nginx 的功能,因此 Nginx 的場(chǎng)景非常豐富,同時(shí) Nginx 采用的是 BSD 許可證,賦予了 Nginx 最大的靈活性。簡(jiǎn)單來(lái)說(shuō),Nginx 具有以下幾個(gè)優(yōu)點(diǎn):
- 高并發(fā),高性能
- 可擴(kuò)展性好
- 高可靠,一年之中停機(jī)時(shí)間可能只有幾秒
- 熱部署,可以不重啟升級(jí)
- 靈活性高,采用BSD 許可證
BSD開(kāi)源協(xié)議是一個(gè)給予使用者者很大自由的協(xié)議。基本上使用者可以“為所欲為”,可以自由的使用,修改源代碼,也可以將修改后的代碼作為開(kāi)源或者專(zhuān)有軟件再發(fā)布。
在Linux中,Nginx默認(rèn)被安裝在目錄 /usr/local/nginx 中,其中二進(jìn)制文件路徑為 /usr/local/nginx/sbin/nignx ,配置文件路徑為 /usr/local/nginx/conf/nginx.conf 。注:在 configure 執(zhí)行時(shí)是可以指定把它們安裝在不同的目錄的。
在Linux中,Nginx默認(rèn)被安裝在目錄 /usr/local/nginx
中,其中二進(jìn)制文件路徑為 /usr/local/nginx/sbin/nignx
,配置文件路徑為 /usr/local/nginx/conf/nginx.conf
。
注:在 configure
執(zhí)行時(shí)是可以指定把它們安裝在不同的目錄的。
1、默認(rèn)方式啟動(dòng)
直接執(zhí)行Nginx二進(jìn)制程序:
/usr/local/nginx/sbin/nginx/sbin/nginx
這時(shí),會(huì)讀取默認(rèn)路徑下的配置文件: /usr/local/nginx/conf/nginx.conf
實(shí)際上,在沒(méi)有顯式指定 nginx.conf 配置文件路徑時(shí),將打開(kāi) configure
命令執(zhí)行時(shí)使用 --conf-path=PATH
指定nginx.conf文件
2、另行指定配置文件的啟動(dòng)方式
/usr/local/nginx/sbin/nginx -c /tmp/nginx.conf
這時(shí),會(huì)讀取 -c
參數(shù)后指定的nginx.conf配置文件來(lái)啟動(dòng)Nginx.
3、另行指定安裝目錄的啟動(dòng)方式
使用 -p
參數(shù)指定Nginx的安裝目錄
/usr/local/nginx/sbin/nginx -p /usr/local/nginx/
4、另行指定全局配置項(xiàng)的啟動(dòng)方式
可以通過(guò) -g
參數(shù)臨時(shí)指定一些全局配置項(xiàng),以使新的配置項(xiàng)生效
/usr/local/nginx/sbin/nginx -g "pid /var/nginx/test.pid"
上面這行命令意味著會(huì)把pid文件寫(xiě)到 /var/nginx/test.pid
中
-g
參數(shù)的約束條件是指定的配置項(xiàng)不能與默認(rèn)路徑下的nginx.conf中的配置項(xiàng)相沖突,否則無(wú)法啟動(dòng)。就像上例那樣,類(lèi)似這樣的配置項(xiàng): pid /var/nginx/test.pid
,是不能存在于默認(rèn)的nginx.conf中的。
另一個(gè)約束條件是以 -g
方式啟動(dòng)的Nginx服務(wù)執(zhí)行其他命令時(shí),需要把 -g
參數(shù)也帶上,否則可能出現(xiàn)配置項(xiàng)不匹配的情形。例如,如果要停止Nginx服務(wù),那么需要執(zhí)行下面代碼:
/usr/local/nginx/sbin/nginx -g "pid /var/nginx/test.pid" -s stop
如果不帶上 -g "pid /var/nginx/test.pid"
,那么找不到pid文件,也會(huì)出現(xiàn)無(wú)法停止服務(wù)端情況。
5、測(cè)試配置信息是否錯(cuò)誤
在不啟動(dòng)Nginx的情況下,使用 -t
參數(shù)僅測(cè)試配置文件是否有錯(cuò)誤:
/usr/local/nginx/sbin/nginx -t
執(zhí)行結(jié)果中顯式配置是否正確
6、在測(cè)試配置階段不輸出信息
測(cè)試配置選項(xiàng)時(shí),使用 -q
參數(shù)可以不把error級(jí)別以下的信息輸出到屏幕
/usr/local/nginx/sbin/nginx/ -t -q
7、顯示版本信息
使用 -v
參數(shù)顯示Nginx的版本信息
/usr/local/nginx/sbin/nginx -v
8、顯示編譯階段的參數(shù)
使用 -V
參數(shù)除了可以顯示Nginx的版本信息外,還可以顯示配置編譯階段的信息,如 GCC編譯器的版本、操作系統(tǒng)的版本、執(zhí)行 configure
時(shí)的參數(shù) 等:
/usr/local/nginx/sbin/nginx -V
9、快速的停止服務(wù)
使用 -s stop
可以強(qiáng)制停止Nginx服務(wù)。 -s
參數(shù)其實(shí)是告訴Nginx程序向正在運(yùn)行的Nginx服務(wù)發(fā)送信號(hào)量,Nginx程序通過(guò)nginx.pid文件中得到的master進(jìn)程的進(jìn)程ID,再向運(yùn)行中的master進(jìn)行發(fā)送TERM信號(hào)來(lái)快速的關(guān)閉Nginx服務(wù)
/usr/local/nginx/sbin/nginx -s stop
實(shí)際上,如果通過(guò) kill
命令直接向nginx master進(jìn)程發(fā)送TERM或者INT信號(hào),效果是一樣的
先通過(guò) ps
命令來(lái)查看nginx master的進(jìn)程ID
[root@VM_0_16_centos ~]# ps -ef | grep nginx root 1413 1 0 2021 ? 00:00:00 nginx: master process ./sbin/nginx nobody 1414 1413 0 2021 ? 00:18:51 nginx: worker process root 26388 26323 0 13:52 pts/0 00:00:00 grep --color=auto nginx
接下來(lái)直接通過(guò) kill
命令來(lái)發(fā)送信號(hào):
kill -s SIGTERM 1413
或者
kill -s SIGINT 1413
上面兩條命令的效果與執(zhí)行 /usr/local/nginx/sbin/nginx -s stop
是完全一致的
10、優(yōu)雅的停止服務(wù)
如果系統(tǒng)Nginx服務(wù)可以正常的處理完當(dāng)前所有請(qǐng)求再停止服務(wù),那么可以使用 -s quit
參數(shù)來(lái)停止服務(wù)
/usr/local/nginx/sbin/nginx -s quit
該命令與快速停止Nginx服務(wù)是有區(qū)別的。當(dāng)快速停止服務(wù)時(shí),worker進(jìn)程與master進(jìn)程在收到信號(hào)后會(huì)立刻跳出循環(huán),退出進(jìn)程。而優(yōu)雅的停止服務(wù)時(shí),首先會(huì)關(guān)閉監(jiān)聽(tīng)端口,停止接收新的連接,然后把當(dāng)前正在處理的連接全部處理完,最后再退出進(jìn)程。
與快速停止服務(wù)類(lèi)似,可以直接發(fā)送QUIT信息給master進(jìn)程來(lái)停止服務(wù),其效果與執(zhí)行 -s quit
命令是一樣的
kill -s SIGQUIT <nginx master pid>
如果希望優(yōu)雅的停止某個(gè)worker進(jìn)程,那么可以通過(guò)向該進(jìn)程發(fā)送WINCH信號(hào)來(lái)停止服務(wù)
kill -s SIGWINCH <nginx worker pid>
11、使運(yùn)行中的Nginx重讀配置項(xiàng)并生效
使用 -s reload
參數(shù)可以使運(yùn)行中的Nginx服務(wù)重新加載nginx.conf文件
/usr/local/nginx/sbin/nginx -s reload
事實(shí)上Nginx會(huì)先檢查新的配置項(xiàng)是否有誤,如果全部正確就可以采取優(yōu)雅的方式關(guān)閉,再重新啟動(dòng)Nginx來(lái)實(shí)現(xiàn)這個(gè)目的。類(lèi)似的, -s
是發(fā)送信號(hào),仍然可以使用 kill
命令發(fā)送HUP信號(hào)來(lái)達(dá)到相同的效果
kill -s SIGHUP <nginx master pid>
12、日志文件回滾
使用 -s reopen
參數(shù)可以重新打開(kāi)日志文件,這樣可以先把當(dāng)前日志文件改名或者轉(zhuǎn)移到其他目錄中進(jìn)行備份,再重新打開(kāi)時(shí)就會(huì)生成新的日志文件。這個(gè)功能使得日志文件不至于過(guò)大
/usr/local/nginx/sbin/nginx -s reopen
當(dāng)然這與使用 kill
命令發(fā)送USR1信號(hào)效果相同
kill -s SIGUSR1 <nginx master pid>
13、平滑升級(jí)Nginx
當(dāng)Nginx服務(wù)升級(jí)到新的版本時(shí),必須要將舊的二進(jìn)制文件Nginx替換掉,通常情況下這是需要重啟服務(wù)的,但Nginx支持不重啟服務(wù)來(lái)完成新版本的平滑升級(jí)
升級(jí)時(shí)包括以下步驟:
1.通知正在運(yùn)行的舊版本Nginx準(zhǔn)備升級(jí)。通過(guò)向master進(jìn)程發(fā)送USR2信號(hào)可達(dá)到目的
kill -s SIGUSR2 <nginx master pid>
這時(shí)運(yùn)行中的Nginx會(huì)將pid文件重命名,如將 /usr/local/nginx/logs/nginx.pid
重命名為 /usr/local/nginx/logs/nginx.pid.oldbin
,這樣新的Nginx才有可能啟動(dòng)成功
2.啟動(dòng)新版本的Nginx,可以使用上面任意一種啟動(dòng)方法。這時(shí)通過(guò)ps命令可以發(fā)現(xiàn)新舊版本的Nginx在同時(shí)運(yùn)行。
3.通過(guò) kill
命令向舊版本的master進(jìn)程發(fā)送SIGQUIT信號(hào),以?xún)?yōu)雅的方式關(guān)閉舊版本的Nginx。隨后將只有新版本的Nginx服務(wù)運(yùn)行,此時(shí)平滑升級(jí)完畢。
14、顯示命令行幫助
使用 -h
或者 -?
參數(shù)會(huì)顯示支持的所有命令行參數(shù)
原文鏈接:https://www.cnblogs.com/youth-blog/archive/2022/10/27/16832451.html
相關(guān)推薦
- 2023-05-20 pytorch中forwod函數(shù)在父類(lèi)中的調(diào)用方式解讀_python
- 2022-03-07 c語(yǔ)言實(shí)現(xiàn)學(xué)生管理系統(tǒng)詳解_C 語(yǔ)言
- 2022-10-05 C語(yǔ)言二叉樹(shù)的概念結(jié)構(gòu)詳解_C 語(yǔ)言
- 2022-08-28 linux應(yīng)用參數(shù)保存與配置
- 2022-06-29 C語(yǔ)言詳細(xì)講解常用字符串處理函數(shù)_C 語(yǔ)言
- 2022-06-02 Pandas實(shí)現(xiàn)DataFrame的簡(jiǎn)單運(yùn)算、統(tǒng)計(jì)與排序_python
- 2022-04-18 C#實(shí)現(xiàn)彈窗提示輸入密碼_C#教程
- 2024-01-06 RocketMQ消息丟失問(wèn)題
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支