Nginx訪問日誌、日誌不記錄靜態文件、日誌切割

Nginx訪問日誌

  • 日誌的內容是經過編輯Nginx主配置文件來定義的。
  • 日誌的格式(顯示在日誌文件中的內容)
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
  • $remote_addr 客戶端ip(公網ip)
  • $http_x_forwarded_for 代理服務器ip
  • $time_local 服務器本地時間
  • $host 訪問主機名(域名)
  • $request_uri 訪問的url地址
  • $status 狀態碼
  • $http_referer 從哪一個站點跳轉到該站點的(直接訪問該項爲-)
  • $http_user_agent 訪問方式(經過XX瀏覽器,或curl方式訪問)

自定義一個格式的日誌test

  • 爲了試驗效果,咱們能夠自定義一個日誌格式,只記錄客戶端ip和狀態碼的日誌格式test ,而後把這個格式應用到www.lcblog.com上去。
log_format  test  '$remote_addr $status' ;
  • 應用到blog.abc.com.conf中
access_log  /var/log/nginx/host.access.log  test;
  • 日誌中只會記錄以下,客戶端ip和狀態碼的信息。
[root@localhost blog.abc.com]# cat /var/log/nginx/host.access.log 
192.168.254.1 200
127.0.0.1 301

日誌不記錄靜態文件

  • 一個網站裏可能包含不少靜態文件,好比jpg,png,gif,js,css等,若是每個訪問都記錄日誌的話,日誌文件會瘋狂增加,這就須要配置靜態文件不記錄日誌了,在虛擬主機配置文件中添加以下內容。
location ~* \.(png|jpeg|gif|js|css|bmp|flv)$
    {
    access_log off;
     }
  • 補充:css

  • tail -f /data/logs/bbs.access.log //-f選型能夠動態查看一個文件的內容nginx

  • ">"能夠清空一個文件內容正則表達式

  • ~* 表示不區分大小寫的匹配 後面跟正則表達式 .表示任意一個字符瀏覽器

日誌切割

  • 系統自帶日誌切割工具logrotate。配置文件是/etc/logratate.conf,子配置文件/etc/lograte.d/*
  • nginx 的日誌切割配置文件/etc/logrotate.d/nginx
/var/log/nginx/*.log {
        daily
        dateext
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 nginx adm
        sharedscripts
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
  • 測試執行logrotate -vf /etc/logrotate.d/nginx
相關文章
相關標籤/搜索