nginx中的日志切割詳解
Nginx 日志切割基礎(chǔ)概念
Nginx日志切割是指定期將 Nginx 的訪問(wèn)日志和錯(cuò)誤日志分割成多個(gè)文件,以便于管理和分析。
日志切割有助于防止日志文件過(guò)大,影響服務(wù)器性能,并且便于進(jìn)行日志歸檔和分析。
相關(guān)優(yōu)勢(shì)
- 性能優(yōu)化:避免單個(gè)日志文件過(guò)大,減少
磁盤I/O壓力。 - 易于管理:分割后的日志文件更易于備份和歸檔。
- 便于分析:可以針對(duì)特定時(shí)間段的日志進(jìn)行分析,提高問(wèn)題排查效率。
類型
- 按大小切割:當(dāng)日志文件達(dá)到指定大小時(shí)進(jìn)行切割。
- 按時(shí)間切割:按天、小時(shí)等時(shí)間單位進(jìn)行日志切割。
應(yīng)用場(chǎng)景
- 高流量網(wǎng)站:需要頻繁處理大量訪問(wèn)請(qǐng)求的網(wǎng)站。
- 日志分析:需要定期分析日志數(shù)據(jù)以監(jiān)控系統(tǒng)性能和安全狀況。
- 合規(guī)性要求:某些行業(yè)對(duì)日志保存有特定的時(shí)間要求和格式。
實(shí)現(xiàn)方法
1、使用 logrotate工具
logrotate是一個(gè)常用的日志管理工具,可以配置自動(dòng)切割 Nginx 日志。
配置示例:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
解釋:
daily:每天切割一次。rotate 14:保留最近14天的日志文件。compress:壓縮舊的日志文件。create 0640 www-data adm:創(chuàng)建新日志文件時(shí)設(shè)置權(quán)限和所有者。postrotate:切割后重新加載Nginx配置。
2、使用腳本手動(dòng)切割
也可以編寫(xiě)自定義腳本來(lái)實(shí)現(xiàn)日志切割。
示例腳本:
#!/bin/bash
#Nginx日志文件所在目錄
LOG_PATH=/data/nginx/logs/
#獲取昨天的日期
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#獲取pid文件路徑
PID=/var/run/nginx.pid
cd ${LOG_PATH}
#分割日志
mv access.log access-${YESTERDAY}.log
tar -zcvf access-${YESTERDAY}.log.tar.gz access-${YESTERDAY}.log --remove-files
#向Nginx主進(jìn)程發(fā)送USR1信號(hào),重新打開(kāi)日志文件
kill -USR1 `cat ${PID}`
解釋:
檢查日志文件大小,如果超過(guò)10MB,則進(jìn)行切割。
使用時(shí)間戳命名新文件,并重新創(chuàng)建原日志文件。
發(fā)送 USR1 信號(hào)給 Nginx 進(jìn)程,使其重新打開(kāi)日志文件。
遇到的問(wèn)題及解決方法
日志切割后 Nginx 不再寫(xiě)入新日志
原因:Nginx 進(jìn)程可能沒(méi)有正確重新打開(kāi)日志文件。
解決方法:
- 確保
postrotate腳本中發(fā)送了正確的信號(hào)(如USR1)給Nginx進(jìn)程。 - 檢查
Nginx配置文件中是否有錯(cuò)誤,導(dǎo)致無(wú)法重新打開(kāi)日志文件。
日志文件權(quán)限問(wèn)題
原因:切割后的日志文件權(quán)限設(shè)置不正確,導(dǎo)致 Nginx 無(wú)法寫(xiě)入。
解決方法:
- 在
logrotate配置中使用create選項(xiàng)設(shè)置正確的權(quán)限和所有者。 - 確保
Nginx進(jìn)程運(yùn)行的用戶有權(quán)限寫(xiě)入日志文件。 - 通過(guò)以上方法,可以有效實(shí)現(xiàn)
Nginx日志切割,并解決常見(jiàn)的問(wèn)題。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
nginx location中uri的截取的實(shí)現(xiàn)方法
這篇文章主要介紹了nginx location中uri的截取的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Nginx訪問(wèn)日志及錯(cuò)誤日志參數(shù)說(shuō)明
這篇文章主要介紹了Nginx訪問(wèn)日志及錯(cuò)誤日志參數(shù)說(shuō)明,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
解決nginx 503 Service Temporarily Unavailable方法示例
這篇文章主要介紹了解決nginx 503 Service Temporarily Unavailable方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
nginx 讓users有權(quán)限啟動(dòng)的兩種方法
這篇文章主要介紹了nginx 讓users有權(quán)限啟動(dòng)兩種方法的相關(guān)資料,需要的朋友可以參考下2017-05-05
Nginx配置反向代理服務(wù)器實(shí)現(xiàn)在https網(wǎng)站中請(qǐng)求http資源
?Nginx反向代理?是一種將客戶端請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器的技術(shù),主要用于負(fù)載均衡、提高安全性和提升性能,本文給大家介紹了Nginx配置反向代理服務(wù)器實(shí)現(xiàn)在https網(wǎng)站中請(qǐng)求http資源,需要的朋友可以參考下2025-03-03
nginx設(shè)置上傳目錄無(wú)執(zhí)行權(quán)限的方法
在windows+iis下,可以設(shè)置上傳目錄,類似:upload,uploadfile,attachments,這樣的目錄下面無(wú)腳本執(zhí)行權(quán)限,從而防止非法用戶上傳腳本得到webshell2010-11-11
解決訪問(wèn)nginx首頁(yè)404的過(guò)程
這篇文章主要介紹了解決訪問(wèn)nginx首頁(yè)404的過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-09-09

