1. 程式人生 > >6月8日任務(12.10 Nginx訪問日誌 12.11 Nginx日誌切割 12.12 靜態文件)

6月8日任務(12.10 Nginx訪問日誌 12.11 Nginx日誌切割 12.12 靜態文件)

筆記

課程名稱:12.10?Nginx訪問日誌
筆記內容:

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
定義日誌格式
技術分享圖片
combined_realip:日誌格式名字,可以寫任意,但是後面應用都要寫這個
技術分享圖片
log_format ys ‘$remote_addr $http_x_forwarded_for [$time_local]‘
‘ $host "$request_uri" $status‘
‘ "$http_referer" "$http_user_agent"‘;
技術分享圖片

除了在主配置文件nginx.conf裏定義日誌格式外,還需要在虛擬主機配置文件中增加

[root@localhost ~]# vim /usr/local/nginx/conf/vhost/test.com.conf
增加access_log /tmp/test.com.log ys;

技術分享圖片
檢測加載
技術分享圖片

技術分享圖片

課程名稱:12.11?Nginx日誌切割
筆記內容:
Nginx沒有自帶的日誌切割工具,借助系統自帶可以使用系統logrotate命令切割日誌的方法(自己擴展)
也可以自己寫腳本(課程)
Shell腳本(所有的腳本放在/usr/local/sbin目錄下)
創建[root@localhost ~]# vim /usr/local/sbin/nginx_log_rotate.sh
樣例:
#! /bin/bash
/data/logs/ (假設nginx的日誌存放路徑)

d=date -d "-1 day" +%Y%m%d (為了生成日期,年月日)
([root@localhost ~]# date -d "-1 day" +%Y%m%d
20180605 昨天的日期顯示的命令 切割的日誌一定是昨天的)
logdir="/data/logs" (日誌路徑)
nginx_pid="/usr/local/nginx/logs/nginx.pid"
(找PID 為了執行最下面/bin/kill -HUP cat $nginx_pid這條命令)
cd $logdir (到日誌路徑下)
做循環
舉例:
([root@localhost vhost]# for f in ‘ls ‘ ; do ls -l $f ; done
技術分享圖片
f代表文件(變量名字),in在哪裏進行循環,ls則是顯示出來,技術分享圖片
這裏就是在這兩個文件中進行循環;ls這個目錄下都有哪些文件每一個文件作為它一次循環的對象,第一次$f為aaa.com.conf,第二次$f為 test.com.conf,同理下面這個循環)
for log in ls *.log (以log作為變量,ls查看有哪些log)
do
mv $log $log-$d (所有的log改下名字加上日期)
done
/bin/kill -HUP cat $nginx_pid
(此命令與 /usr/local/nginx/sbin/nginx -s reload加載是一樣的,日誌切割,實際還是在寫原來的日誌,只有加載了才會寫新的日誌)
技術分享圖片
執行腳本 sh為執行腳本命令 -x查看腳本執行的過程
[root@localhost vhost]# sh -x /usr/local/sbin/nginx_log_rotate.sh
技術分享圖片
++ date -d ‘-1 day‘ +%Y%m%d (定義變量)

  • d=20180605 (d就是變量)
  • logdir=/tmp/ (日誌目錄)
  • nginx_pid=/usr/local/nginx/logs/nginx.pid
  • cd /tmp/ (進入日誌目錄)
    ++ ls test.com.log yum.log (有兩個日誌文件,循環了兩次)
  • for log in ‘ls *.log
  • mv test.com.log test.com.log-20180605 (第一次循環生成日誌後面加了日期後綴)
  • for log in ‘ls *.log
  • mv yum.log yum.log-20180605 (第二次循環日誌生成後面加了日期後綴)
    ++ cat /usr/local/nginx/logs/nginx.pid (cat下PID)
  • /bin/kill -HUP 2026 (加載後生成新的文件yum.log和test.com)
    技術分享圖片
    寫完腳本後需要寫任務計劃
    [root@localhost vhost]# crontab -e
    每天淩晨零點去執行腳本
    0 0 /bin/bash /usr/local/sbin/nginx_log_rotate.sh
    技術分享圖片
    30天以前的日誌做刪除
    [root@localhost vhost]# find /tmp/ -name
    .log-* -type f -mtime +30 |xargs rm

課程名稱:12.12?靜態文件不記錄日誌和過期時間
筆記內容:
[root@localhost ~]# vim /usr/local/nginx/conf/vhost/test.com.conf
location ~ ..(gif|jpg|jpeg|png|bmp|swf)$
(location匹配的意思 \脫義符(為了精準匹配 文件名.jpg) |或者的意思)
{
expires 7d; (過期時間,緩存在用戶瀏覽器中時間)
access_log off;
}
location ~ .
.(js|css)$
{
expires 12h;
access_log off;
}
技術分享圖片

檢查和加載
技術分享圖片
配置文件中expires的效果(過期時間)
技術分享圖片

6月8日任務(12.10 Nginx訪問日誌 12.11 Nginx日誌切割 12.12 靜態文件)