站長資訊網
        最全最豐富的資訊網站

        CentOS下Nginx配置Web訪問日志并結合Shell腳本定時切割

        在一個成熟的WEB系統里,沒有日志管理是不可以的,有了日志,可以幫助你得到用戶地域來源、跳轉來源、使用終端、某個URL訪問量等相關信息;通過錯誤日志,你可以得到系統某個服務或server的性能瓶頸等。因此,將日志好好利用,你可以得到很多有價值的信息。

        日志格式及定義

        (1)log_format
        log_format用來設置日志格式,也就是日志文件中每條日志的格式,具體如下:
        log_format name(格式名稱) type(格式樣式)

        log_format main ‘$server_name $remote_addr – $remote_user [$time_local] “$request” ‘
        ‘$status $uptream_status $body_bytes_sent “$http_referer” ‘
        ‘”$http_user_agent” “$http_x_forwarded_for” ‘
        ‘$ssl_protocol $ssl_cipher $upstream_addr $request_time $upstream_response_time’;

        參數說明:

        $server_name:虛擬主機名稱。
        $remote_addr:遠程客戶端的IP地址。
        -:空白,用一個“-”占位符替代,歷史原因導致還存在。
        $remote_user:遠程客戶端用戶名稱,用于記錄瀏覽者進行身份驗證時提供的名字,如登錄百度的用戶名scq2099yt,如果沒有登錄就是空白。
        [$time_local]:訪問的時間與時區,比如18/Jul/2012:17:00:01 +0800,時間信息最后的”+0800″表示服務器所處時區位于UTC之后的8小時。
        $request:請求的URI和HTTP協議,這是整個PV日志記錄中最有用的信息,記錄服務器收到一個什么樣的請求
        $status:記錄請求返回的http狀態碼,比如成功是200。
        $uptream_status:upstream狀態,比如成功是200.
        $body_bytes_sent:發送給客戶端的文件主體內容的大小,比如899,可以將日志每條記錄中的這個值累加起來以粗略估計服務器吞吐量。
        $http_referer:記錄從哪個頁面鏈接訪問過來的。
        $http_user_agent:客戶端瀏覽器信息
        $http_x_forwarded_for:客戶端的真實ip,通常web服務器放在反向代理的后面,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿到的IP地址是反向代理服務器的iP地址。反向代理服務器在轉發請求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的服務器地址。
        $ssl_protocol:SSL協議版本,比如TLSv1。
        $ssl_cipher:交換數據中的算法,比如RC4-SHA。
        $upstream_addr:upstream的地址,即真正提供服務的主機地址。
        $request_time:整個請求的總時間。
        $upstream_response_time:請求過程中,upstream的響應時間。

        (2)access_log

        access_log指令用來指定日志文件的存放路徑(包含日志文件名)、格式和緩存大小,具體如下:
        access_log path(存放路徑) [format(自定義日志格式名稱) [buffer=size | off]]
        舉例說明如下:
        access_log logs/access.log main;
        如果想關閉日志,可以如下:
        access_log off;
        能夠使用access_log指令的字段包括:http、server、location。
        需要注意的是:Nginx進程設置的用戶和組必須對日志路徑有創建文件的權限,否則,會報錯。
        小技巧:如果需要在access_log中記錄post請求的參數,可以參考這里。
        Nginx支持為每個location指定強大的日志記錄。同樣的連接可以在同一時間輸出到不止一個的日志中,更多信息請查看這里,這里,還有這里。

        下面拿我本地的虛擬機來簡單配置一下日志,并獲取日志信息。

        日志生成的到Nginx根目錄logs/access.log文件,默認使用“main”日志格式,也可以自定義格式。

        在Nginx下配置的虛擬主機

        server {
         listen 80;
         server_name mytest.com;
         location / {
            root /data/wwwroot/default/mytest;  //網站目錄
            index index.html;
         }
         access_log  /data/wwwlogs/mytest_log/access_nginx.log main; //日志路徑
         當然也可以配置錯誤日志路徑error_log……

        }

        Nginx主配置文件的配置規則

        http {
          include mime.types;
          log_format  main ‘$remote_addr – $remote_user  [$time_local]  “$request” ‘
                                ‘$status  $body_bytes_sent “http_referer” ‘
                                ‘ “$http_user_agent” “$http_x_forwarded_for” ‘;
        ……
        }

        記得配置完成先命令測試下是否OK,然后在重新加載配置文件

        [root@localhost mytest_log]# nginx -tc /usr/local/nginx/conf/nginx.conf
        nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
        nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

        CentOS下Nginx配置Web訪問日志并結合Shell腳本定時切割

        下面來說一下定時切割(雖然新版的Nginx已經支持)

        根據上面的配置,確定了日志路徑之后,我在/data/crontab目錄下創建了一個腳本

        #!/bin/bash
        LOGPATH=/data/wwwlogs/mytest_log/access_nginx.log //nginx的日志路徑
        BAKPATH=/data/wwwlogs/bak  //要備份的路徑
        bak=$BAKPATH/$(date -d yesterday +%Y%m%d%H%M).mytest.access.log  //定義了的bak變量
        echo $bak  //執行輸出一下

        [root@localhost crontab]# chmod 777 nginx_log.sh  //賦權限

        [root@localhost crontab]# ./nginx_log.sh  //執行腳本
        /data/wwwlogs/bak/201801101205.mytest.access.log //輸出的格式

        完整腳本如下

        #!/bin/bash
        #設置日志文件存放目錄
        LOGPATH=/data/wwwlogs/mytest_log/access_nginx.log
        BAKPATH=/data/wwwlogs/bak
         #備分文件名稱
        bak=$BAKPATH/$(date -d yesterday +%Y%m%d%H%M).mytest.access.log
        #echo $bak
         #重命名日志文件
        mv $LOGPATH $bak
        touch $LOGPATH
         #向nginx主進程發信號重新打開日志,確保nginx.pid路徑正確
         #[root@localhost wwwlogs]# find / -name nginx.pid
         #/var/run/nginx.pid
        kill -USR1 `cat  /var/run/nginx.pid`

        然后創建定時器

        關于定時器詳細的講解在 http://m.0106606.com/Linux/2019-03/157851.htm 下

        01 00 * * * /data/crontab/nginx_log.sh  # 每天0時1分(建議在02-04點之間,系統負載小) 

        查看一下/data/wwwlogs/bak就會有日志文件了

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 99久久精品国产麻豆| 99久久亚洲综合精品网站| 99国产欧美久久久精品蜜芽| 国产精品无码专区在线观看 | 亚洲Av永久无码精品三区在线| 国产精品videossex白浆| 国产精品无码无卡在线播放| 亚洲精品国产成人影院| 精品乱码久久久久久夜夜嗨| 永久免费精品视频| 99在线精品视频| 国产精品无码无片在线观看| 日产欧美国产日韩精品| 综合国产精品第一页| 日韩视频中文字幕精品偷拍| 精品久久久久久99人妻| 国产精品白丝AV嫩草影院| 午夜精品美女写真福利| 久久久国产精品福利免费| 国产精品久久波多野结衣| 成人国产精品免费视频| 国产精品白浆在线观看免费| 精品久久久久中文字幕日本| 精品人妻人人做人人爽| 精品国产三级a在线观看| 久久亚洲中文字幕精品有坂深雪| 亚洲国产午夜中文字幕精品黄网站 | 香港三级精品三级在线专区 | 久久99国产精品久久99| 国产精品久久毛片完整版| 国产成人精品一区二区三区免费| 久久国产精品成人片免费| 国精无码欧精品亚洲一区| 国产精品亚洲A∨天堂不卡| 国产成人亚洲综合无码精品| 99久久久精品| 久热这里只精品99re8久| 99久久99久久精品国产片果冻| 国产精品 视频一区 二区三区| 国内精品视频九九九九| 老年人精品视频在线|