Nginx日誌配置

2022-07-03 19:30:17 字數 2996 閱讀 2406

眾所周知,線上如果出現事故我們通常都是檢視日誌去進行問題定位並且進行修復。使用好nginx日誌有利於我們線上進行修復異常問題。在nginx中日誌主要分為兩種:access_log(訪問日誌)和error_log(錯誤日誌)。通過檢視access_log我們可以檢視使用者ip,瀏覽器資訊及請求時間等資訊,通過檢視error_log我們可以檢視線上出錯的具體資訊,可以幫助我們定位異常的原因。本篇文章主要帶領大家詳細了解nginx如何配置日誌。本文將會涉及到的日誌配置指令:

access_log指令

首先,我們可以先看看access_log指令。access_log命令可以配置訪問日誌。我們可以先看下access_log指令的語法結構:

我們先來看看語法結構中的引數的含義:

access_log指令可以使用於http根節點,虛擬伺服器server節點,上下文配置location以及limit_except中。無法在其他作用域使用access_log指令,否則nginx會報錯。我們可以看乙個簡單的配置access_log的小例子:

這個配置指定日誌儲存路徑為/root/.pm2/logs/niyueling.log,日誌使用預設格式combined。日誌快取大小為32k,日誌寫入前會進行gzip壓縮,快取有效期為5分鐘。

log_format指令

剛才有講過如果未指定日誌格式,nginx會使用combined日誌格式為預設格式。combined日誌格式預設使用格式為:

但是如果不想使用combined日誌格式,就可以使用log_format指令來自定義格式內容。log_format指令需要在http節點下進行配置。我們先來看下log_format指令的語法結構:

我們先來看看log_format的引數對應的用法:

下面貼一下log_format指令中常用的一些變數:

我們可以接著看個自定義日誌格式的小案例

}open_log_file_cache指令

對於**的訪問記錄,通常操作都是首先開啟日誌檔案,然後寫入日誌記錄,最後關閉檔案。預設情況下日誌檔案不進行快取的,我們可以通過open_log_file_cache指令設定日誌檔案快取。open_log_file_cache指令可以配置在http根節點,虛擬伺服器server節點以及上下文location中。我們先看下open_log_file_cache指令的語法結構:

首先先貼下引數對應的含義:

可以看乙個簡單配置日誌快取的小例子:

log_not_found指令

這個命令用於指定是否在error_log錯誤日誌中記錄不存在的錯誤,如檔案不存在等。預設值為是。我們可以先看下語法結構:

log_not_found指令可以配置在http根節點,虛擬伺服器server節點以及上下文location中。設定為on表示記錄不存在的錯誤,設定為off表示不記錄不存在的錯誤。

log_subrequest指令

log_subrequest指令用於指定在access_log訪問日誌中是否記錄子請求的訪問記錄。預設情況為不記錄,貼下語法結構:

log_subrequest指令可以配置在http根節點,虛擬伺服器server節點以及上下文location中。設定為on表示記錄子請求訪問記錄,設定為off表示不記錄子請求訪問記錄。

rewrite_log指令

rewrite_log指令由ngx_http_rewrite_module模組提供服務,用來記錄日誌重寫。可以在error_log錯誤日誌中記錄notice級別的重寫日誌。預設是不啟用狀態,貼下語法結構:

rewrite_log指令可以配置在http根節點,虛擬伺服器server節點以及上下文location以及if條件判斷中。設定為on表示在錯誤日誌中記錄notice級別的重寫日誌,設定為off表示在錯誤日誌中不記錄notice級別的重寫日誌。

error_log指令

error_log指令顧名思義,就是用來指定錯誤日誌的,一般來說線上出現bug都是通過error_log日誌來定位問題所在而加以解決的。error_log指令可以記錄伺服器和請求處理過程中的錯誤資訊。我們先看下error_log指令的語法結構:

引數含義其實很容易可以理解:

日誌切割

nginx記錄日誌預設情況下是訪問日誌全部寫入access_log中,錯誤日誌全部寫入error_log中。這樣會導致日誌檔案原來越大,不利於檢視日誌分析問題異常,所以我們可以將日誌以日期為單位進行切割。首先需要寫乙個指令碼實現nginx按天切割:

日誌儲存位置

獲取當前年資訊和月資訊

獲取昨天的日資訊

按年月建立資料夾

備份昨天的日誌到當月的資料夾

輸出備份日誌檔名

通過nginx訊號量控制重讀日誌

然後給指令碼新增可執行許可權,最後新增linux定時任務:

每天凌晨兩點半進行日誌分割

** 重啟linux定時任務**

通過上面的講解差不多可以知道nginx對於日誌是如何進行配置的,實際上就是通過log_format配置日誌格式,如果log_format中使用了nginx變數,則可以通過open_log_file_cache指令來設定快取提高效能。然後通過access_log進行設定訪問日誌,通過error_log指令設定錯誤日誌。最後實現定時任務定時切割每天的日誌,有利於我們後期維護。

Nginx日誌配置

一,日誌格式 http referer http user agent 此日誌格式為,ip不僅記錄 的ip還記錄遠端客戶端真實ip。remote addr與 http x forwarded for 用以記錄客戶端ip位址,乙個記錄 ip,乙個記錄真實ip remote user 用以記錄客戶端使用...

nginx 日誌配置

不同使用者防衛nginx會把每個使用者訪問往咱的日誌資訊記錄到指定的日誌檔案裡,供 管理員分析使用者瀏覽行為等,此功能又ngx http log module 模組負責。控制訪問日誌的引數引數 說明log format 通過不同的名稱來定義日誌的輸出格式,可以定義多個 access log 用來指定...

nginx日誌配置

1.配置錯誤日誌 error log nginx 將遇到的不同嚴重級別問題的資訊寫入錯誤日誌。error log 指令設定對特定檔案,stderr 或 syslog 的日誌記錄,並指定要記錄的訊息的最低嚴重級別。預設情況下,錯誤日誌位於 logs error.log 絕對路徑取決於作業系統和安裝 並...