nginx常用操作命令
一、基礎(chǔ)維護(hù)
1.啟動(dòng)
#1.直接啟動(dòng) #進(jìn)入nginx目錄,執(zhí)行啟動(dòng)命令 cd /usr/local/nginx/sbin ./nginx # 或者直接 /usr/local/nginx/sbin/nginx #2.指定配置文件方式啟動(dòng) #進(jìn)入nginx目錄,執(zhí)行啟動(dòng)命令 cd /usr/local/nginx/sbin ./nginx -c /usr/local/nginx/conf/nginx.conf #或者 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf2.檢查nginx配置文件
#進(jìn)入nginx目錄 cd /usr/local/nginx/sbin #檢查配置文件是否有語法操作 ./nginx -t # 或者顯示指定配置文件 ./nginx -t -c /usr/local/nginx/conf/nginx.conf如果配置文件存在語法錯(cuò)誤,會(huì)有相應(yīng)的提示信息,正常我們修改配置后,先進(jìn)行檢查,然后在進(jìn)行重啟
3.平滑的重啟,修改配置后,重新加載配置
#進(jìn)入nginx目錄 cd /usr/local/nginx/sbin #執(zhí)行重載命令 ./nginx -s reload原理說明:
nginx工作中,包括一個(gè)master進(jìn)程,多個(gè)worker進(jìn)程。worker進(jìn)程負(fù)責(zé)具體的http等相關(guān)工作,master進(jìn)程主要是進(jìn)行控制。
nginx -s reload 命令加載修改后的配置文件,命令下達(dá)后發(fā)生如下事件
Nginx的master進(jìn)程檢查配置文件的正確性,若是錯(cuò)誤則返回錯(cuò)誤信息,nginx繼續(xù)采用原配置文件進(jìn)行工作(因?yàn)閣orker未受到影響)
Nginx啟動(dòng)新的worker進(jìn)程,采用新的配置文件
Nginx將新的請(qǐng)求分配新的worker進(jìn)程
Nginx等待以前的worker進(jìn)程的全部請(qǐng)求已經(jīng)都返回后,關(guān)閉相關(guān)worker進(jìn)程
重復(fù)上面過程,知道全部舊的worker進(jìn)程都被關(guān)閉掉。
所以,重啟之后,master的進(jìn)程號(hào)不變,worker的進(jìn)程號(hào)會(huì)改變。
4.關(guān)閉nginx
#進(jìn)入nginx目錄 cd /usr/local/nginx/sbin # 快速停止nginx ./nginx -s stop # 完整有序的停止nginx,這個(gè)命令會(huì)等待所有請(qǐng)求結(jié)束后再關(guān)閉nginx ./nginx -s quit5.reopen重新打開日志文件
#進(jìn)入nginx目錄 cd /usr/local/nginx/sbin # 重新打開日志文件 ./nginx -s reopen應(yīng)用場(chǎng)景:
當(dāng)需要切割 nginx 日志文件時(shí),我們需要用到 nginx -s reopen 命令,用來完成新日志的生成。當(dāng)日志文件太大時(shí),一般我們是按天切割文件,也就是按天做個(gè)分類,每天的日志放在一個(gè)文件中,并用日期命令,方便日后查找。
但時(shí)我們簡(jiǎn)單的把文件移動(dòng)并重新命令是無法及時(shí)生效的,因?yàn)樵?linux 下的文件句柄,文件在被打開的情況下 mv 移走文件,操作這個(gè)文件的進(jìn)程還是有這個(gè)文件的信息,原進(jìn)程還是讀寫原來的文件,簡(jiǎn)單的 mv 無法生效也就無法完成我們想要的文件分隔。
一般我們需要兩步:
1、移走文件并重命名
2、利用 nginx 的 reopen 功能,完成新日志文件的生成。
二、其他命令重啟、關(guān)閉nginx
查看進(jìn)程號(hào),下圖 master的為主進(jìn)程號(hào)
ps -ef | grep nginx輸出信息
停止服務(wù)操作
二、高階維護(hù)
2.1 配置日志
請(qǐng)求日志
http {log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';} $remote_addr #記錄訪問網(wǎng)站的客戶端地址$remote_user #遠(yuǎn)程客戶端用戶名$time_local #記錄訪問時(shí)間與時(shí)區(qū)$request #用戶的http請(qǐng)求起始行信息$status #http狀態(tài)碼,記錄請(qǐng)求返回的狀態(tài)碼,例如:200、301、404等$body_bytes_sent #服務(wù)器發(fā)送給客戶端的響應(yīng)body字節(jié)數(shù)$request_length #請(qǐng)求的長(zhǎng)度$request_time #請(qǐng)求處理時(shí)間,單位為秒,精度毫秒; 從讀入客戶端的第一個(gè)字節(jié)開始,直到把最后一個(gè)字符發(fā)送給客戶端后進(jìn)行日志寫入為止。$http_referer #記錄此次請(qǐng)求是從哪個(gè)連接訪問過來的,可以根據(jù)該參數(shù)進(jìn)行防盜鏈設(shè)置。$http_user_agent #記錄客戶端訪問信息,例如:瀏覽器、手機(jī)客戶端等$http_x_forwarded_for #當(dāng)前端有代理服務(wù)器時(shí),設(shè)置web節(jié)點(diǎn)記錄客戶端地址的配置,此參數(shù)生效的前提是代理服務(wù)器也要進(jìn)行相關(guān)的 x_forwarded_for設(shè)置常見設(shè)置
日志級(jí)別
每個(gè)日志級(jí)別包括更高級(jí)別。例如,如果您將日志級(jí)別設(shè)置為warn,則Nginx還將記錄error,crit,alert和emerg消息。未指定log_level參數(shù)時(shí),默認(rèn)為error。
debug-調(diào)試消息。
info -信息性消息。
notice -公告。
warn -警告。
error -處理請(qǐng)求時(shí)出錯(cuò)。
crit -關(guān)鍵問題。需要立即采取行動(dòng)。
alert -警報(bào)。必須立即采取行動(dòng)。
emerg - 緊急情況。系統(tǒng)處于無法使用的狀態(tài)。
2.2 高級(jí)配置
grpc代理配置
參考文檔
Nginx常用命令(啟動(dòng)、重啟、關(guān)閉、檢查)
總結(jié)
以上是生活随笔為你收集整理的nginx常用操作命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uniapp 打包安装(安卓和ios)
- 下一篇: Flutter之实现生成二维码,扫描二维