6月8日任務(12.10 Nginx訪問日誌 12.11 Nginx日誌切割 12.12 靜態文件)
筆記內容:
[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的日誌存放路徑)
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 靜態文件)