1. 程式人生 > >Nginx教程(三) Nginx日誌管理

Nginx教程(三) Nginx日誌管理

代理服務器 pla load 配置文件 404頁 base lsp bsp 知識

Nginx教程() Nginx日誌管理

1 日誌管理

1.1 Nginx日誌描述

通過訪問日誌,你可以得到用戶地域來源、跳轉來源、使用終端、某個URL訪問量等相關信息;通過錯誤日誌,你可以得到系統某個服務或server的性能瓶頸等。因此,將日誌好好利用,你可以得到很多有價值的信息。

1.2 Nginx日誌格式

打開nginx.conf配置文件:vim /usr/local/nginx/conf/nginx.conf

日誌部分內容:

#access_log logs/access.log main;

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

默認“main”日誌格式:

技術分享

參數明細表:

$remote_addr

客戶端的ip地址(代理服務器,顯示代理服務ip)

$remote_user

用於記錄遠程客戶端的用戶名稱(一般為“-”)

$time_local

用於記錄訪問時間和時區

$request

用於記錄請求的url以及請求方法

$status

響應狀態碼,例如:200成功、404頁面找不到等。

$body_bytes_sent

給客戶端發送的文件主體內容字節數

$http_user_agent

用戶所使用的代理(一般為瀏覽器)

$http_x_forwarded_for

可以記錄客戶端IP,通過代理服務器來記錄客戶端的ip地址

$http_referer

可以記錄用戶是從哪個鏈接訪問過來的

查看日誌命令tail -f /usr/local/nginx/logs/access.log

技術分享

1.3 Nginx自定義日誌

打開nginx.conf配置文件去掉#註釋見下圖:

技術分享

自定義某一個server配置的日誌,使用“main”日誌格式。

技術分享

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

重新讀取加載Nginx配置文件:

執行命令:nginx-s reload

查看日誌文件:

執行命令:tail -100f /usr/local/nginx/logs/abc.access.log

技術分享

1.4 Nginx日誌分隔

nginx的日誌文件沒有rotate功能。編寫每天生成一個日誌,我們可以寫一個nginx日誌切割腳本來自動切割日誌文件。

第一步就是重命名日誌文件,不用擔心重命名後nginx找不到日誌文件而丟失日誌。在你未重新打開原名字的日誌文件前,nginx還是會向你重命名的文件寫日誌,Linux是靠文件描述符而不是文件名定位文件。

第二步向nginx主進程發送USR1信號。nginx主進程接到信號後會從配置文件中讀取日誌文件名稱,重新打開日誌文件(以配置文件中的日誌名稱命名),並以工作進程的用戶作為日誌文件的所有者。重新打開日誌文件後,nginx主進程會關閉重名的日誌文件並通知工作進程使用新打開的日誌文件。工作進程立刻打開新的日誌文件並關閉重名名的日誌文件。然後你就可以處理舊的日誌文件了。[或者重啟nginx服務]。

nginx日誌按每分鐘自動切割腳本如下:

新建shell腳本:vi/usr/local/software/nginx/nginx_log.sh

        #!/bin/bash
        #設置日誌文件存放目錄
        LOG_HOME="/usr/local/software/nginx/logs/"

        #備分文件名稱
        LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)".abc.access.log

        #重命名日誌文件
        mv ${LOG_HOME}/abc.access.log ${LOG_HOME}/${LOG_PATH_BAK}.log

        #向nginx主進程發信號重新打開日誌 
        kill -USR1 `cat /usr/local/software/nginx/logs/nginx.pid`

創建crontab設置作業

#設置日誌文件存放目錄crontab -e

*/1 * * * * sh /usr/local/software/nginx/nginx_log.sh

技術分享

Nginx教程(三) Nginx日誌管理