最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx訪問(wèn)日志切割的3種實(shí)現(xiàn)方法

 更新時(shí)間:2023年08月09日 09:52:33   作者:迷失在IT路上  
這篇文章主要給大家介紹了關(guān)于Nginx訪問(wèn)日志切割的3種實(shí)現(xiàn)方法,隨著訪問(wèn)量的增長(zhǎng),日志文件會(huì)越來(lái)越大,時(shí)間長(zhǎng)既會(huì)影響訪問(wèn)的速度,也會(huì)占用一部分磁盤(pán)空間,這時(shí)候就需要日志切割了,需要的朋友可以參考下

1. 使用 shell 腳本實(shí)現(xiàn)

接下來(lái),很簡(jiǎn)單,shell 腳本來(lái)了

#/bin/bash 
# author  jiangexing
set -e   #腳本執(zhí)行,遇到錯(cuò)就退出,不再往下執(zhí)行
sleep 1 # 配合定時(shí)任務(wù),0 點(diǎn)過(guò)一秒再開(kāi)始切割任務(wù)
yesterday=$(date -d 'yesterday' +%Y-%m-%d)  #取得服務(wù)器當(dāng)前時(shí)間
ng_logs_dir='/var/log/nginx'  #nginx 日志文件目錄
if [ -d $ng_logs_dir ];then    #判斷日志目錄是否存在
  cd $ng_logs_dir 
  mv access.log  access_${yesterday}.log  #通過(guò) mv 命令將日志移動(dòng)到分割后的日志,error 日志我一般不做切割
  kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)  #發(fā)送 kill -USR1 信號(hào)給 Nginx 的主進(jìn)程號(hào),讓 Nginx 重新生成一個(gè)新的日志文件
  sleep 1
  tar -czf  access_${yesterday}.log.tar.gz access_${yesterday}.log  #把舊的日志打成壓縮包
  rm -f  access_${yesterday}.log  #已有壓縮包,刪除壓縮前的日志
else
  echo "日志目錄不存在,請(qǐng)檢查"
  exit 0
fi

這已經(jīng)達(dá)到了我們想要的效果了,點(diǎn)個(gè)贊

當(dāng)然還有最重要的一步,那就是要做好定時(shí)任務(wù)

crontable -l
0 0 * * *  /usr/local/nginx/scripts/split.sh

2. 使用 logrotate 來(lái)實(shí)現(xiàn)

這種切割的方法,一開(kāi)始我是不知道的,因?yàn)槲抑暗?nginx 都是使用源碼安裝的,在一次偶然的情況下,使用了 yum 安裝的方式安裝了 nginx,然后發(fā)現(xiàn) nginx 的日志自動(dòng)切割和壓縮了,這就讓我要去一探究竟了

后來(lái)發(fā)現(xiàn),這個(gè)切割功能是由 logrotate 來(lái)實(shí)現(xiàn)的,接下來(lái)我們一起來(lái)看看看

如果系統(tǒng)沒(méi)有安裝logrotate 可以使用 

sudo yum install logrotate -y

進(jìn)行安裝

配置 logrotate

接下來(lái)我們就來(lái)配置 nginx 切割的配置文件,我的 nginx 日志路徑在/var/log/nginx

我們?cè)?/etc/logrotate.d/ 目錄下新建一個(gè) nginx 的文件

vim nginx
#########以下為文件配置內(nèi)容##############
/var/log/nginx/*log   # 這里也可以寫(xiě)明對(duì)具體哪幾個(gè)文件進(jìn)行切割
{
    su root root
    daily
    dateext
    missingok
    rotate 7
    notifempty
    compress
    create 644 www www
    sharedscripts
    postrotate
        [ -f /usr/local/nginx/logs/nginx.pid ] && kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
    endscript
}
# 我們也可以先手 手動(dòng)執(zhí)行一下切割試試看看效果
logrotate -f /etc/logrotate.d/nginx

查看執(zhí)行后的結(jié)果:

沒(méi)錯(cuò),這就是我們想要的 ,這種方式和第一種還是比較像的。

logrotate 配置項(xiàng)詳解

logrotate 的默認(rèn)配置文件是 /etc/logrotate.conf。主要參數(shù):

  • daily–>指定轉(zhuǎn)儲(chǔ)周期為每天
  • weekly–>指定轉(zhuǎn)儲(chǔ)周期為每周
  • monthly–>指定轉(zhuǎn)儲(chǔ)周期為每月
  • dateext–>在文件末尾添加當(dāng)前日期
  • compress–>通過(guò) gzip 壓縮轉(zhuǎn)儲(chǔ)以后的日志
  • nocompress–>不需要壓縮時(shí),用這個(gè)參數(shù)
  • copytruncate–>先把日志內(nèi)容復(fù)制到舊日志文件后才清除日志文件內(nèi)容,可以保證日志記錄的連續(xù)性
  • nocopytruncate–>備份日志文件但是不截?cái)?/li>
  • create mode owner group–>轉(zhuǎn)儲(chǔ)文件,使用指定的文件模式創(chuàng)建新的日志文件
  • nocreate–>不建立新的日志文件
  • delaycompress 和 compress –>一起使用時(shí),轉(zhuǎn)儲(chǔ)的日志文件到下一次轉(zhuǎn)儲(chǔ)時(shí)才壓縮
  • nodelaycompress–>覆蓋 delaycompress 選項(xiàng),轉(zhuǎn)儲(chǔ)同時(shí)壓縮。
  • errors address–>專(zhuān)儲(chǔ)時(shí)的錯(cuò)誤信息發(fā)送到指定的 Email 地址
  • ifempty–>即使是空文件也轉(zhuǎn)儲(chǔ),這個(gè)是 logrotate 的缺省選項(xiàng)。
  • notifempty–>如果是空文件的話(huà),不轉(zhuǎn)儲(chǔ)
  • mail address–>把轉(zhuǎn)儲(chǔ)的日志文件發(fā)送到指定的 E-mail 地址
  • nomail–>轉(zhuǎn)儲(chǔ)時(shí)不發(fā)送日志文件
  • olddir directory–>轉(zhuǎn)儲(chǔ)后的日志文件放入指定的目錄,必須和當(dāng)前日志文件在同一個(gè)文件系統(tǒng)
  • noolddir–>轉(zhuǎn)儲(chǔ)后的日志文件和當(dāng)前日志文件放在同一個(gè)目錄下
  • rotate count–>指定日志文件刪除之前轉(zhuǎn)儲(chǔ)的次數(shù),0 指沒(méi)有備份,5 指保留 5 個(gè)備份
  • tabootext [+] list 讓 logrotate –> 不轉(zhuǎn)儲(chǔ)指定擴(kuò)展名的文件,缺省的擴(kuò)展名是:.rpm-orig, .rpmsave, v, 和 ~
  • size–> size 當(dāng)日志文件到達(dá)指定的大小時(shí)才轉(zhuǎn)儲(chǔ),Size 可以指定 bytes (缺省)以及 KB (sizek)或者 MB (sizem).
  • prerotate/endscript –>在轉(zhuǎn)儲(chǔ)以前需要執(zhí)行的命令可以放入這個(gè)對(duì),這兩個(gè)關(guān)鍵字必須單獨(dú)成行
  • postrotate/endscript –>在轉(zhuǎn)儲(chǔ)以后需要執(zhí)行的命令可以放入這個(gè)對(duì),這兩個(gè)關(guān)鍵字必須單獨(dú)成行

3. 高級(jí)用法–使用 nginx 本身來(lái)實(shí)現(xiàn)

當(dāng) nginx 在容器里,把 nginx 日志掛載出來(lái)的時(shí)候,我們發(fā)現(xiàn)就不適合再使用 kill -USR1 的方式去分割日志

這時(shí)候當(dāng)然就需要從 nginx 本身配置去解決這個(gè)問(wèn)題了,我們都知道訪問(wèn)日志里面都有一個(gè)時(shí)間相關(guān)的字段,如果我們把這個(gè)時(shí)間撈出來(lái),這個(gè)問(wèn)題就解決了

在對(duì)用的 nginx 配置文件中添加如下配置

     if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
            set $year $1;
            set $month $2;
            set $day $3;
     }
     access_log /var/log/nginx/${year}_${month}_${day}_access.log json;

這個(gè)的日志切割可以達(dá)到秒級(jí),用法都是一樣的,去正則匹配到時(shí)間戳就好了。nginx 內(nèi)置的變量有很多,列如 ${server_name} 這些變量都是可以用來(lái)命名日志

當(dāng)然如果我們需要壓縮,就寫(xiě)個(gè)對(duì)應(yīng)的定時(shí)任務(wù)去做壓縮就好了

總結(jié)

到此這篇關(guān)于Nginx訪問(wèn)日志切割的3種實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Nginx訪問(wèn)日志切割內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • FastDFS安裝和配置整合Nginx-1.13.3的方法

    FastDFS安裝和配置整合Nginx-1.13.3的方法

    這篇文章主要介紹了FastDFS安裝和配置整合Nginx-1.13.3的方法,需要的朋友可以參考下
    2017-08-08
  • nginx 平滑重啟與升級(jí)的實(shí)現(xiàn)方法

    nginx 平滑重啟與升級(jí)的實(shí)現(xiàn)方法

    有時(shí)候我們需要平滑重啟nginx服務(wù),防止出現(xiàn)問(wèn)題,這里簡(jiǎn)單的總結(jié),方便需要的朋友
    2013-02-02
  • nginx配置文件目錄過(guò)程

    nginx配置文件目錄過(guò)程

    文章介紹了在本地使用VSCode打開(kāi)Nginx配置文件時(shí)發(fā)現(xiàn)未指定配置文件目錄的問(wèn)題,通過(guò)查看Nginx官網(wǎng)和默認(rèn)配置文件目錄未找到配置文件,最終通過(guò)`nginx?-V`命令確認(rèn)了Nginx在編譯時(shí)指定了配置文件目錄
    2025-11-11
  • Windows?Server?Nginx?反向代理Spring?Boot配置無(wú)效報(bào)404未找到的問(wèn)題

    Windows?Server?Nginx?反向代理Spring?Boot配置無(wú)效報(bào)404未找到的問(wèn)題

    一個(gè)Spring?Boot的系統(tǒng),開(kāi)發(fā)完成發(fā)布到Windows服務(wù)器里,使用nginx作為反向代理,修改刷新配置文件,nginx.conf,總是報(bào)錯(cuò)404,這篇文章主要介紹了Windows?Server?Nginx?反向代理Spring?Boot配置無(wú)效?404?未找到的問(wèn)題及解決方案
    2024-01-01
  • NGINX中瀏覽器的盜鏈與防止被盜的實(shí)現(xiàn)

    NGINX中瀏覽器的盜鏈與防止被盜的實(shí)現(xiàn)

    本文介紹在局域網(wǎng)內(nèi)實(shí)現(xiàn)盜鏈與防盜鏈的配置方法,通過(guò)Nginx設(shè)置valid_referers限制資源訪問(wèn)來(lái)源,非法引用返回403禁止訪問(wèn),感興趣的可以了解一下
    2025-07-07
  • Nginx訪問(wèn)日志及錯(cuò)誤日志參數(shù)說(shuō)明

    Nginx訪問(wèn)日志及錯(cuò)誤日志參數(shù)說(shuō)明

    這篇文章主要介紹了Nginx訪問(wèn)日志及錯(cuò)誤日志參數(shù)說(shuō)明,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • NGINX基于cookie針對(duì)同一域名進(jìn)行分流轉(zhuǎn)發(fā)

    NGINX基于cookie針對(duì)同一域名進(jìn)行分流轉(zhuǎn)發(fā)

    本文介紹了利用NGINX基于cookie進(jìn)行多環(huán)境分流的方法,通過(guò)在Docker中部署兩個(gè)后端NGINX容器,并在前端NGINX配置中設(shè)置map規(guī)則,根據(jù)cookie值將請(qǐng)求分發(fā)到不同后端,感興趣的可以了解一下
    2025-07-07
  • 詳解Nginx proxy_pass的一個(gè)/斜杠引發(fā)的血案

    詳解Nginx proxy_pass的一個(gè)/斜杠引發(fā)的血案

    這篇文章主要介紹了詳解Nginx proxy_pass的一個(gè)/斜杠引發(fā)的血案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Nginx實(shí)現(xiàn)https網(wǎng)站配置代碼實(shí)例

    Nginx實(shí)現(xiàn)https網(wǎng)站配置代碼實(shí)例

    這篇文章主要介紹了Nginx實(shí)現(xiàn)https網(wǎng)站配置代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Nginx-rtmp實(shí)現(xiàn)直播媒體實(shí)時(shí)流效果

    Nginx-rtmp實(shí)現(xiàn)直播媒體實(shí)時(shí)流效果

    這篇文章主要介紹了Nginx-rtmp實(shí)現(xiàn)直播媒體實(shí)時(shí)流效果,文中給出了總體設(shè)計(jì)圖,為了整合平臺(tái),會(huì)自建RTMP流媒體服務(wù)器和使用云廠商SaaS的RTMP流媒體服務(wù),需要的朋友可以參考下
    2018-08-08

最新評(píng)論

望谟县| 花莲县| 淮阳县| 乳源| 静宁县| 印江| 民勤县| 农安县| 永嘉县| 黄浦区| 邵阳县| 含山县| 垣曲县| 桑日县| 石棉县| 深水埗区| 容城县| 麻城市| 芜湖市| 柳河县| 中方县| 柏乡县| 肥东县| 霍山县| 古丈县| 德格县| 上林县| 金平| 峨山| 西城区| 额济纳旗| 渑池县| 泰州市| 锡林浩特市| 新建县| 广东省| 辽阳市| 柯坪县| 定远县| 景洪市| 南昌县|