11月27日任務
12.10 Nginx訪問日誌
12.11 Nginx日誌切割
12.12 靜態文件不記錄日誌和過期時間
1.Nginx訪問日誌
示例一:
- 日誌格式
- vim /usr/local/nginx/conf/nginx.conf //搜索log_format
$remote_addr |
客戶端IP(公網IP) |
$http_x_forwarded_for | 代理服務器的IP |
$time_local |
服務器本地時間 |
$host |
訪問主機名(域名) |
$request_uri |
訪問的url地址 |
$status |
狀態碼 |
$http_referer |
referer |
$http_user_agent |
user_agent |
- 除了在主配置文件nginx.conf裏定義日誌格式外,還需要在虛擬主機配置文件中增加
- vim test.com.conf
- access_log /tmp/1.log combined_realip;
- 這裏的combined_realip就是在nginx.conf中定義的日誌格式名字
- -t && -s reload 檢查語法並重新加載配置文件
- curl -x127.0.0.1:80 test.com -I 測試
- cat /tmp/1.log 查看日誌文件
2.Nginx日誌切割
示例一:因爲Nginx不自帶日誌切割工具,所以自定義腳本借用
- 自定義shell 腳本
- vim /usr/local/sbin/nginx_log_rotate.sh//寫入如下內容
#! /bin/bash
## 假設nginx的日誌存放路徑爲/data/logs/
d=`date -d "-1 day" +%Y%m%d` 生成昨天的日期
logdir="/data/logs" 定義存放位置
nginx_pid="/usr/local/nginx/logs/nginx.pid" 定義位置,找他的pid
cd $logdir 進入目錄下
for log in `ls *.log` 做個for循環
do
mv $log $log-$d 做一個改名操作
done
/bin/kill -HUP `cat $nginx_pid` 重新加載一下,生成新的日誌文件
- 執行一下這個腳本來看看效果,執行過程
- ls /tmp/ 看一下
- 在做一個任務計劃 ,每天0.0分執行該腳本
- crontab -e 編輯如下
0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh
3.靜態文件不記錄日誌和過期時間
示例一:
- vi test.com.conf
- 配置如下
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 7d; 定義過期時間
access_log off; 關閉日誌記錄
}
location ~ .*\.(js|css)$
{
expires 12h;
access_log off;
}
- -t &&reload 檢測語法,並重新加載一下配置文件
- 測試,先創建兩個以圖片結尾的文件
cd /data/wwwroot/test.com
vim 1.gif
vim 2.js
- curl測試一下
- 查看日誌是否記錄
- 測試過期時間