nginx日志過(guò)大問(wèn)題解決
1. 問(wèn)題點(diǎn)
nginx默認(rèn)的日志在logs/access.log,并且是一直累加寫入,時(shí)間長(zhǎng)了就會(huì)非常大,占用過(guò)多的硬盤,如果強(qiáng)行刪除是很不友好的,需要重啟服務(wù);
2. 文件分割
上圖文件已經(jīng)達(dá)到了十個(gè)G左右
處理的思路肯定是生成帶有日志的一系列的文件,然后保留一定的日志,這樣才是一個(gè)正常的思路;
log_format access-upstream '$time_iso8601|$request|$remote_addr|$upstream_response_time|$http_user_agent|$http_x_forwarded_for'; map $time_iso8601 $logdate { '~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd; default 'date-not-found'; } access_log logs/access-$logdate.log ; # access_log off; # 實(shí)在不需要的話,可以將其關(guān)閉(如心跳請(qǐng)求,會(huì)記錄日志)
上面代碼中主要使用到了map模塊和對(duì)應(yīng)的語(yǔ)法:map指令使用ngx_http_map_module模塊提供的。默認(rèn)情況下,nginx有加載這個(gè)模塊,除非人為的 --without-http_map_module。
ngx_http_map_module模塊可以創(chuàng)建變量,這些變量的值與另外的變量值相關(guān)聯(lián)。允許分類或者同時(shí)映射多個(gè)值到多個(gè)不同值并儲(chǔ)存到一個(gè)變量中,map指令用來(lái)創(chuàng)建變量,但是僅在變量被接受的時(shí)候執(zhí)行視圖映射操作,對(duì)于處理沒(méi)有引用變量的請(qǐng)求時(shí),這個(gè)模塊并沒(méi)有性能上的缺失。
加上之后重新加載配置文件:
# 檢測(cè)配置是否正確 ./sbin/nginx -t #加載配置 ./sbin/nginx -s reload
觀察logs文件中已經(jīng)生成了當(dāng)日的日志,這是可以清理掉之前老文件了(如果確定沒(méi)有用途的情況下),下一步就是做定時(shí)器,定時(shí)刪除過(guò)期的文件
3. 定時(shí)器定時(shí)刪除N天之前的日志
新建刪除腳本,假如保留30天日志
#!/bin/bash # 指定日志文件夾路徑 LOG_DIR="/usr/local/nginx/logs" # 獲取當(dāng)前日期 CURRENT_DATE=$(date "+%Y-%m-%d") # 計(jì)算 30 天前的日期 OLD_DATE=$(date -d "30 days ago" "+%Y-%m-%d") # 遍歷日志文件夾中的文件 for logfile in "$LOG_DIR"/*; do # 提取文件名中的日期部分 filename=$(basename "$logfile") filedate=${filename#access-} filedate=${filedate%.log} # 如果文件的日期早于 OLD_DATE,則刪除該文件 if [[ "$filedate" < "$OLD_DATE" ]]; then rm "$logfile" fi done
添加定時(shí)器
crontab -e
編輯并保存
0 0 * * * /usr/local/nginx/logs/cleanup_logs.sh
查看定時(shí)器
crontab -l
這樣每天凌晨會(huì)清理掉30天之前的日志文件;
到此這篇關(guān)于nginx日志過(guò)大問(wèn)題解決的文章就介紹到這了,更多相關(guān)nginx日志過(guò)大內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
keepalived+lvs 對(duì)nginx做負(fù)載均衡和高可用的操作方法
這篇文章主要介紹了keepalived+lvs 對(duì)nginx做負(fù)載均衡和高可用的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-12-12詳解Nginx中HTTP的keepalive相關(guān)配置
這篇文章主要介紹了Nginx中HTTP的keepalive相關(guān)配置,以及Nginx的Httpd守護(hù)進(jìn)程相關(guān)的keepalive timeout配置,需要的朋友可以參考下2016-01-01nginx 部署 vue 項(xiàng)目找不到j(luò)s css文件的解決方法
這篇文章主要介紹了nginx 部署 vue 項(xiàng)目找不到j(luò)s css文件的解決方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07windows系統(tǒng)安裝配置nginx環(huán)境
這篇文章介紹了windows系統(tǒng)安裝配置nginx環(huán)境的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Nginx在Windows下的安裝及環(huán)境配置(將nginx作為服務(wù)運(yùn)行)
這篇文章主要介紹了Nginx在Windows下的安裝及環(huán)境配置,主要是將nginx作為服務(wù)運(yùn)行,需要的朋友可以參考下2018-11-11Nginx配置中root和alias的區(qū)別及說(shuō)明
這篇文章主要介紹了Nginx配置中root和alias的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08解決nginx:[emerg]?getpwnam(“nginx“)failed報(bào)錯(cuò)問(wèn)題
編譯安裝nginx時(shí),啟動(dòng)服務(wù)報(bào)錯(cuò)nginx:[emerg]getpwnam("nginx")failed,原因是沒(méi)有為nginx創(chuàng)建用戶,解決方法是創(chuàng)建一個(gè)nginx用戶,該用戶是你在編譯時(shí)指定的用戶2025-02-02