1. 程式人生 > >2018.3.14 12周3次課

2018.3.14 12周3次課

Linux學習

十二周三次課 (3月14日)

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次課