2018.3.14 12周3次課
12.10 Nginx訪問日誌 12.11 Nginx日誌切割 12.12 靜態文件不記錄日誌和過期時間
12.10 Nginx訪問日誌
日誌格式:
vim /usr/local/nginx/conf/nginx.conf //搜索log_format,註意配置文件中,分號;是結束符
combined_realip:日誌格式的名字,後面可以調用它
$remote_addr:客戶端IP(公網IP),就是訪問網站的用戶的出口IP
$http_x_forwarded_for:代理服務器IP,如果使用了代理,則會記錄代理的IP
$time_local:服務器本地時間
$host:訪問的主機名(域名)
$request_uri:訪問的URL地址
$status:狀態碼
$http_referer:為referer地址
$http_user_agent:為usr_agent
除了在主配置文件nginx.conf裏定義日誌格式外,還需要在虛擬主機配置文件中增加日誌一行
access_log /tmp/1.log aming; //這裏的aming就是在nginx.conf中定義的日誌格式名字,如果不寫就是默認的日誌格式,比較簡單
-t && -s reload
測試
curl -x127.0.0.1:80 test2.com/admin/index.html/jfasljgsn –I
curl -x127.0.0.1:80 test3.com/admin/index.html/jfasljgsn –I
查看日誌:
cat /tmp/1.log
12.11 Nginx日誌切割
Nginx的日誌很簡單,不像httpd還有自帶的切割工具,要想切割nginx日誌需要借助系統的切割工具或者自定義腳本
自定義shell 腳本
vim /usr/local/sbin/nginx_log_rotate.sh //寫入如下內容
#! /bin/bash
d=`date -d "-1 day" +%Y%m%d` //生成昨天的日期,格式年月日
logdir="/tmp/" //日誌目錄
nginx_pid="/usr/local/nginx/logs/nginx.pid" //pid路徑一定要對,不然最後一條命令就無法執行
cd $logdir //進入到日誌目錄下
for log in `ls *.log` //進行循環查看log文件
do
mv $log $log-$d //改名成log名-昨天日期
done
/bin/kill -HUP `cat $nginx_pid` //重新加載,生成新的日誌文件
執行腳本:sh -x /usr/local/sbin/nginx_log_rotate.sh
任務計劃:crontab -e
0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh
12.12 靜態文件不記錄日誌和過期時間
配置如下
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ //【.*】表示通配。小括號裏有【|】:表示或者。【\.】:表示脫義,如果不加【\】,後面的【.】表示任何字符
{
expires 7d; // expires配置過期時間
access_log off; //配置為off就可以不記錄訪問日誌
}
location ~ .*\.(js|css)$
{
expires 12h;
access_log off;
}
測試記錄:
不記錄.gif 和.js文件
測試過期時間:
2018.3.14 12周3次課