nginx 日誌功能詳解

2022-01-10 07:38:35 字數 2501 閱讀 6586

在 nginx 中有兩種日誌:

訪問日誌主要用於記錄客戶端的請求。客戶端向 nginx 伺服器發起的每一次請求都會被記錄到 access_log 中。

包含請求 ip、時間、訪問 url 等等,當然訪問日誌中具體記錄哪些日誌資訊我們可以通過 log_format 設定。

access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; # 設定訪問日誌

access_log off; # 關閉訪問日誌

- path 表示指定日誌存放位置

- format 表示日誌格式即日誌中記錄的內容

- buffer 用於指定日誌寫入時的快取大小,預設 64k

- gzip 日誌寫入前先壓縮。壓縮率可以指定,從1到9數值越大壓縮比越高,同時壓縮的速度也越慢,預設1

- flush 設定快取的時間,如果超過flush指定的時間,快取中的內容將被清空

- if 判斷條件,如果指定的條件計算為0或空字串,那麼該請求不會被寫入日誌

設定 buffer 的目的,是為了避免高頻對磁碟進行讀寫操作,即暫時先不將日誌寫入磁碟,而是存入記憶體中,等達到了設定快取大小之後再一次性寫入。

注意 flush 指令是和 buffer 一起使用的,即指定 buffer=size 之後,如果超過 flush 指令設定的時間仍然未達到快取區大小,則也會被寫入到磁碟,沒有 buffer 而只有 flush 則會報錯。

access_log /var/logs/nginx-access.log
上面的例子指定日誌的寫入路徑為 /var/logs/nginx-access.log 日誌格式預設使用 combined:

access_log /var/logs/nginx-access.log buffer=32k gzip flush=1m
該例子指定日誌寫入路徑為/var/logs/nginx-access.log日誌格式預設使用 combined ,日誌的快取大小為 32k,日誌寫入前啟用 gzip 壓縮,壓縮比值 1,快取資料的有效時間為 1 分鐘。

需要注意,在 nginx.conf 檔案中 access_log 預設是關閉的:

去掉注釋:

通過 cat 命令檢視日誌:

它的格式為:

1. $remote_addr(客戶端(使用者) ip位址) 127.0.0.1

2. $remote_user(需要在基於認證規則的時候,才有) ''

3. $time_local(訪問時間) 21/jul/2020:21:10:27 +0800

4. $request(請求的 url 位址) "get / http/1.1"

5. $body_bytes_sent(nginx返回給客戶端的響應體的位元組數,即不含響應頭) 0

6. $status(請求狀態) 304

7. $http_referer(請求**) "-"

9. $http_x_forwarded_for(表示 http 請求端真實 ip) "-"

我們也可以根據自己需要日誌資訊在 nginx 配置檔案中修改日誌格式。

error_log 錯誤日誌,記錄了訪問出錯的資訊,可以用於定位錯誤的原因。

error_log file [level];
第乙個引數指寫入錯誤日誌的路徑

第二個引數指日誌的級別。level 可以是:debug、info、notice、warn、error、crit、alert、emerg 中的任意值。只有日誌的錯誤級別大於等於level 指定的值才會被寫入錯誤日誌中,預設值是 error。

2. 日誌級別:emerg

3. 詳細資訊:bind() to 0.0.0.0:9000 failed (48: address already in use)

Nginx日誌配置詳解

nginx日誌對於統計 系統服務排錯很有用。nginx日誌主要分為兩種 access log 訪問日誌 和error log 錯誤日誌 通過訪問日誌我們可以得到使用者的ip位址 瀏覽器的資訊,請求的處理時間等資訊。錯誤日誌記錄了訪問出錯的資訊,可以幫助我們定位錯誤的原因。本文將詳細描述一下如何配置n...

nginx日誌切割詳解

日誌的關鍵性就不用多說了,對於 的日誌來說,如果 訪問量較大,每天產生的日誌也是非常龐大的,nginx預設都是將日誌寫入到指定的日誌檔案中,如果日誌檔案變得非常大,那麼自然的寫入日誌就較慢,如果我們需要分析日誌,對於幾百兆或者幾g的檔案,分析起來也很不方便,這裡我採用的是系統自帶日誌輪詢logrot...

nginx日誌詳解和日誌切割

我們觀察nginx的server段,可以看到如下類似資訊 access log logs host.access.log main 這說明 該server,它的訪問日誌的檔案是 logs host.access.log 使用的 格式 main 格式.除了main格式,你可以自定義其他格式.main格...