LNMP架構(Nginx訪問日誌、Nginx日誌切割、靜態文件不記錄日誌和過時時間)

Nginx訪問日誌

1.打開配置文件,搜索log_formatcss

vim /usr/local/nginx/conf/nginx.conf

2.訪問日誌經常使用變量含義html

  • $remote_addr : 客戶端IP(公網IP)
  • $http_x_forwarded_for : 代理服務器的IP
  • $time_local : 服務器本地時間
  • $host : 訪問主機名(域名)
  • $request_uri : 訪問的url地址
  • $status : 狀態碼
  • $http_referer : referer
  • $http_user_agent : user_agent

3.此處咱們將原來的規則名稱combined_realip修改成yolks_realip而且進行保存nginx

4.修改虛擬主機配置文件shell

  1. 編輯虛擬機配置文件
vim /usr/local/nginx/conf/vhost/test.com.conf

2)添加以下代碼vim

access_log /tmp/1.log yolks_realip; #後面此名稱表明主配置文件的日誌規則名稱,此處不指定則使用默認的日誌規則,顯示內容比較簡單

5.檢查配置文件並從新加載bash

/usr/local/nginx/sbin/nginx -t #檢查
/usr/local/nginx/sbin/nginx -s reload #重啓

6.curl測試服務器

[root@yolks2 ~]# curl -x127.0.0.1:80 test2.com/admin/admin.html -I 
HTTP/1.1 301 Moved Permanently
Server: nginx/1.6.3
Date: Tue, 14 Aug 2018 14:45:04 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: http://test.com/admin/admin.html

7.查看錯誤日誌格式curl

[root@yolks2 ~]# cat /tmp/test.com.log 
127.0.0.1 - [14/Aug/2018:22:45:04 +0800] test2.com "/admin/admin.html" 301 "-" "curl/7.29.0"

Nginx日誌切割

日誌切割腳本實現,即shell實現測試

1.編輯文件 /usr/local/sbin/nginx_log_rotate.sh,添加以下代碼url

## 假設nginx的日誌存放路徑爲/data/logs/
d=`date -d "-1 day" +%Y%m%d` #生成昨天的日期:例如20180813
logdir="/tmp/" #定義日誌目錄
nginx_pid="/usr/local/nginx/logs/nginx.pid" #pid號
cd $logdir #進入目錄
for log in `ls *.log` #循環ls出來的log
do
    mv $log $log-$d #修更名稱
done
/bin/kill -HUP `cat $nginx_pid` #殺掉進程重啓,可以使用 /usr/local/nginx/sbin/nginx -s reload 替換

2.執行腳本命令 : sh

  • x : 查看執行過程

執行命令

[root@yolks2 ~]# sh -x /usr/local/sbin/nginx_log_rotate.sh

執行過程

++ date -d '-1 day' +%Y%m%d
+ d=20180813
+ logdir=/tmp/
+ nginx_pid=/usr/local/nginx/logs/nginx.pid
+ cd /tmp/
++ ls test.com.log
+ for log in '`ls *.log`'
+ mv test.com.log test.com.log-20180813
++ cat /usr/local/nginx/logs/nginx.pid
+ /bin/kill -HUP 885

3.查看/tmp/目錄下test*的文件

[root@yolks2 ~]# ls /tmp/ |grep test*
test.com.log
test.com.log-20180813

4.定時清理舊日誌

find /tmp/ -name *.log-* -type f -mtime +30 |xargs rm #刪除30天之前的日誌文件

5.添加定時任務計劃

1)編輯定時任務文件

crontab -e

2)計劃任務代碼以下

0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh #天天0點執行

靜態文件不記錄日誌和過時時間

1.編輯配置文件**/usr/local/nginx/conf/vhost/test.com.conf**添加以下代碼:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ #匹配靜態文件後綴,.gif|.jpg|.jpeg|.png|.bmp|.swf
    {
          expires      7d; #過時時間
          access_log off; #訪問日誌開關
    }
	location ~ .*\.(js|css)$ #匹配.js和.css文件
    {
          expires      12h; #過時時間
          access_log off; #訪問日誌開關
    }

2.編寫測試文件,好比圖片

[root@yolks2 ~]# touch /data/wwwroot/test.com/test.jpg
[root@yolks2 ~]# ls /data/wwwroot/test.com/
admin  index.html  test.jpg

3.測試

curl -x127.0.0.1:80 test.com/test.jpg -I

查看日誌:

相關文章
相關標籤/搜索