1.日誌格式 css
同httpd同樣,nginx日誌的格式也在主配置文件中設置,若是要更改日誌格式,須要編輯主配置文件html
# /usr/local/nginx/conf/nginx.confnginx
找到下圖中log_formartshell
其中combined_realip是日誌格式的名字,能夠隨便定義,這裏的名字是什麼,後面引用就用什麼名字apache
二、參數解析vim
$remote_addrbash
$http_x_forwarded_for工具
$time_local
$host測試
$request_uri uri就是訪問網站的網址域名後面的部分網站
$status
$http_referer
$http_user_agent
三、編輯虛擬主機配置文件
# vim /usr/local/nginx/conf/vhost/test.com.conf
在此文件中加入如下內容:
access_log /tmp/1.log combined_realip;
其中,access_log表示定義的是訪問日誌的路徑,/tmp/1.log表示訪問日誌存放路徑,combined_realip是以前在主配置文件中定義的日誌格式的名字,若是不定義日誌的格式就會使用系統默認的日誌格式,系統默認的日誌格式會比較簡單。
四、檢測語法錯誤並從新加載
# /usr/local/nginx/sbin/nginx -t
# /usr/local/nginx/sbin/nginx -s reload
五、測試並查看訪問日誌
訪問test3.com/wrwer/err
訪問test2.com/wrwer/err
如今來查看訪問日誌
Nginx不像apache同樣帶有日誌切割工具,因此Nginx切割日誌須要使用到系統的日誌切割工具或者本身寫切割的腳本,下面咱們使用本身寫的腳原本切割日誌
一、建立腳本
咱們將全部的腳本放在/usr/local/sbin/目錄下
# vim /usr/local/sbin/nginx_logrotate.sh
在腳本中寫入如下內容:
#! /bin/bash
d=`date -d "-1 day" +%Y%m%d` //date -d "-1 day" +%Y%m%d是一個日期,而且是當前時間的頭一天
logdir="/tmp/" // 假設nginx的日誌存放路徑爲/tmp/
nginx_pid="/usr/local/nginx/logs/nginx.pid" //此處找到的pid是爲了執行代碼的最後一行
cd $logdir //進入到日誌目錄下
for log in `ls *.log` //循環查找以*.log爲文件名的日誌文件
do //執行下面的操做
mv $log $log-$d //將找到的文件名字後面加上日期
done
/bin/kill -HUP `cat $nginx_pid` //這行代碼的目的和nginx -s reload是同樣的,由於日誌被切割後,存放日誌的文件發生了變化,須要從新加載一下配置文件
二、執行腳本
# sh -x /usr/local/sbin/nginx_logrotate.sh
使用sh命令就能夠執行腳本,其中-x表示查看腳本執行過程
三、刪除日誌
# find /tmp/ -name *.log-* -type f -mtime +30 |xargs rm
查找到30天之前的文件名爲*.log-*的文件執行刪除操做
四、任務計劃
寫完shell腳本之後咱們還須要作任務計劃
# crontab -e
執行上面命令後會彈出如下界面
咱們在這個文件中寫任務計劃並保存就能夠了。
任務計劃代碼以下:
0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh
表示在天天凌晨0點執行日誌切割
一、編輯虛擬主機配置文件
# vim /usr/local/nginx/conf/vhost/test.com.conf
在配置文件中加入如下內容:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 7d; //過時時間爲7天
access_log off;
}
location ~ .*\.(js|css)$
{
expires 12h; //過時時間爲12小時
access_log off;
}
二、檢測語法錯誤並從新加載配置文件
# /usr/local/nginx/sbin/nginx -t
# /usr/local/nginx/sbin/nginx -s reload
三、訪問測試驗證
訪問圖片
訪問js文件
訪問html頁面
再來查看訪問日誌,能夠看到只記錄了訪問html頁面的日誌
加上-I選項來訪問js文件,能夠看到有一個max-age,這就是過時時間