nginx日志設置


環境:nginx1.16.1

(1)日志類型:access_log(訪問日志) error_log(錯誤日志)rewrite_log

           訪問日志:通過訪問日志我們可以得到用戶的IP地址、瀏覽器的信息,請求的處理時間等信息

           錯誤日志:記錄了訪問出錯的信息,可以幫助我們定位錯誤的原因

   重寫日志:rewrite_log on; 它將發送所有的 rewrite 相關的日志信息到 error_log 文件中,使用 [notice] 級別。隨后就可以在error_log 查看rewrite信息了

(2)設置訪問日志:

           access_log指令的作用域: http,server,location,limit_except

           access_log off; #表示關閉訪問日志

           access_log path [格式名 [buffer=size] [gzip[=level]] [flush=time] [if=condition]];

    注: path    指定日志存放路徑

             格式名  指定日志格式,不寫則默認為combined,使用自定義格式則寫上格式名引入

             buffer  指定日志寫入時的緩存大小

             gzip    日志寫入前先進行壓縮,指定壓縮比1-9,默認1,數值越大壓縮速度越慢

             flush   設置緩存有效時間

             if      條件判斷,若為假則該請求不寫入日志

      例:access_log /var/logs/nginx-access.log buffer=32k gzip flush=1m

    log_format name [escape=default | json] string ...;  #設置日志格式,字符串中的變量表示日志應寫入的內容     

    注: name    格式名 

             escape   設置導出時日志字符串是json還是default格式。2者區別:沒有值的變量,default顯示-,json顯示空字符

             string   日志格式字符串,參數中可使用nginx變量

       eg: log_format main '$remote_addr - $remote_user [$time_local] "$request"' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

      171.44.176.127 - - [21/Nov/2019:12:14:54 +0800] "GET /index/index/index HTTP/1.1" 200 804 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0" "-"

      以上沒有值的變量以 -  顯示,上述日志寫入格式為default

        日志格式相關變量:

      1. 請求信息相關的變量

            $bytes_sent  發送給客戶端的總字節數

      $body_bytes_sent 發送給客戶端的字節數,不包括響應頭的大小

      $request              完整的原始請求行,如 "GET / HTTP/1.1"

      $request_length  請求長度(包括請求行,請求頭和請求體)

      $request_uri     完整的請求地址,如 https://daojia.com/

      $http_host    請求的主機名

      $connection     連接序列號

      $connection_requests     當前TCP連接發出的請求數量

      $pipe    如果請求是通過http流水線發送,則其值為"p",否則為“."

      $status  響應狀態碼

      2. 客戶端信息相關變量

      $remote_addr     客戶端IP

      $remote_user     客戶端用戶名稱,針對啟用了用戶認證的請求

      $http_referer       請求攜帶的referer地址

      $http_user_agent       客戶端瀏覽器信息

      $ssl_protocol    SSL協議版本 

      3. 時間相關變量

      $msec    日志寫入時間,單位為秒,精度是毫秒

      $request_time    請求處理時長,單位為秒,精度為毫秒,從讀入客戶端的第一個字節開始,直到把最后一個字符發送張客戶端進行日志寫入為止

      $time_iso8601   標准格式的本地時間,形如“2017-05-24T18:31:27+08:00”

      $time_local         通用日志格式下的本地時間,如"24/May/2017:18:31:27 +0800"

      4.負載均衡配置相關變量

      $upstream_addr      后台upstream的地址,即真正提供服務的主機地址

      $upstream_status    upstream狀態

      $upstream_response_time  請求過程中,upstream響應時間 

      $http_x_forwarded_for  當前端有代理服務器時,設置web節點記錄客戶端地址的配置,此參數生效的前提是代理服務器也要進行相關的x_forwarded_for設置。

      即有負載均衡服務器時用此設置獲取客戶端ip

      其它變量參見nginx官方文檔http://nginx.org/en/docs/varindex.html

         設置日志為json格式:

            log_format jsonlog escape=json '{

          "time":"$time_iso8601",
          "host": "$server_addr",
          "client": "$remote_addr",
          "size":"$body_bytes_sent",
          "responsetime":"$request_time",
          "domain": "$host",
          "url":"$request_uri",
          "referer": "$http_referer",
          "agent":"$http_user_agent",
            "status":"$status",
          "x_forwarded_for":"$http_x_forwarded_for"
      }';

 

(3)設置錯誤日志:

                 error_log path [level];          # 作用域: http, server, location, mail, stream, main       

                   注: path  日志存儲的路徑

                level  日志級別,默認為error

        日志級別:debug | info | notice | warn | error | crit | alert | emerg 級別從左到右依次變低,越低信息越少

       open_log_file_cache off; 如果日志文件路徑中有變量,則使用它設置日志文件描述符緩存,提高性能

                 open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];

                  注: max          設置緩存中最多容納的文件描述符數量,如果被占滿,采用LRU算法將描述符關閉

              inactive     設置緩存存活時間,默認是10s

              min_uses     在inactive時間段內,日志文件最少使用幾次,該日志文件描述符記入緩存,默認是1次

              valid        設置多久對日志文件名進行檢查,看是否發生變化,默認是60s

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM