1. 程式人生 > >nginx訪問日誌、Nginx日誌切割、 靜態文件不記錄日誌和過期時間

nginx訪問日誌、Nginx日誌切割、 靜態文件不記錄日誌和過期時間

日誌文件 empty bmp 2個 ash pre script nginx日誌 logs

一: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裏定義日誌格式外,還需要在虛擬主機裏配置
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

二:nginx日誌切割

  1. nginx日誌切割腳本
    首先確定訪問日誌路徑,假定為/home/logs/www_access.log,還要確定nginx 的pid文件所在路徑,假定為/usr/local/nignx/var/nignx.pid

    vim /usr/local/sbin/nignx_logrotate.sh
    加入以下內容
    #!/bin/bash
    d=‘date -d "-1 day" +&%F<br/>/bin/mv /home/logs/www_access.log /home/logs/$d_www_access.log<br/>/etc/init.d/nginx reload &gt; /dev/null<br/>gzip -f $d_www_access.log #如果日誌比較大,進行壓縮<br/>/bin/kill -HUPcat /usr/local/nginx/var/nginx.pid` #重新加載以下配置文件

  2. 借住系統的logrotate工具實現
    vim /etc/logrotate.d/nginx
    加入以下內容
    /home/logs/*.log {
    Daily
    Missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 644 nobody nobody
    sharedscripts
    postrotate
    [ -f /usr/local/nginx/var/nignx.pid ]&&kill -USR1 cat /usr/local/nginx/var/nginx.pid
    Endscript
    }
    說明:
    第一行就要定義日誌的路徑,可以是多個路徑
    daily 表示日誌按天歸檔
    missingok 表示忽略所有錯誤,比如日誌文件不存在的情況下
    rotate 52 表示存放日誌的數量最多52個,最老的會被刪除
    compress 表示日誌要壓縮
    delaycompress 表示壓縮除了當前和最近之外的所有其他版本
    notifempty 表示如果日誌為空,則不歸檔
    create 644 nobody nobody 定義歸檔日誌的權限以及屬主和屬組
    sharedscript 表示結束了

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

    配置如下
    location ~ ..(gif|jpg|jpeg|png|bmp|swf)$
    {
    expires 7d;
    access_log off;
    }
    location ~ .
    .(js|css)$
    {
    expires 12h;
    access_log off;
    }

nginx訪問日誌、Nginx日誌切割、 靜態文件不記錄日誌和過期時間