Nginx訪問日誌.Nginx日誌切割... 原

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測試一下

  • 查看日誌是否記錄

  • 測試過期時間

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章