<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          配置 Nginx 訪問與錯誤日志

          共 3437字,需瀏覽 7分鐘

           ·

          2022-04-17 22:52


          來自:入門小站

          Nginx是一個開放源代碼的高性能HTTP和反向代理服務器,負責處理Internet上某些最大站點的負載。在管理NGINX網絡服務器時,你要執(zhí)行的最常見任務之一就是檢查日志文件。

          在對服務器或應用程序問題進行故障排除時,知道如何配置和讀取日志非常有用,因為它們提供了詳細的調試信息。

          Nginx用兩種類型的日志記錄其事件:訪問日志和錯誤日志。訪問日志記錄有關客戶端請求的信息,錯誤日志記錄有關服務器和應用程序問題的信息。

          本教程概述了如何配置和讀取Nginx訪問和錯誤日志。配置Nginx訪問日志的格式與位置,配置錯誤日志格式與位置,默認的日志文件所在位置,讀取和理解Nginx日志文件每個字段。

          配置Nginx訪問日志

          每當處理客戶請求時,Nginx都會在訪問日志中生成一個新記錄。每個事件記錄都包含一個時間戳,并包含有關客戶端和所請求資源的各種信息。訪問日志可以顯示訪問者的位置,訪問者的訪問的頁面等。

          log_format指令允許你定義記錄日志的格式。access_log指令啟用并設置日志文件的位置和使用的格式。

          access_log指令的最基本語法如下:

          access_log?log_file?log_format;

          其中log_file是日志文件的完整路徑,log_format是日志文件使用的格式。可以在httpserverlocation指令的上下文中啟用訪問日志。

          默認情況下,Nginx主配置文件中的http指令配置了全局訪問日志格式。

          http?{
          ??...
          ??access_log??/var/log/nginx/access.log;
          ??...
          }

          /etc/nginx/nginx.conf

          為獲得更好的可維護性,建議為每個服務器設置一個單獨的訪問日志文件。在server指令中設置的access_log指令將覆蓋在http指令中設置的access_log

          http?{
          ??...
          ??access_log??/var/log/nginx/access.log;
          ??...

          ??server?{
          ????server_name?domain.com
          ????access_log??/var/log/nginx/domain.access.log;
          ????...
          ??}
          }

          /etc/nginx/conf.d/domain.com.conf

          如果未指定日志格式,Nginx將使用預定義的combined組合格式,如下所示:

          log_format?combined?'$remote_addr?-?$remote_user?[$time_local]?'
          ????????????????????'"$request"?$status?$body_bytes_sent?'
          ????????????????????'"$http_referer"?"$http_user_agent"';

          要更改日志記錄格式,請覆蓋默認設置或定義一個新設置。例如,定義一個名為?main的新日志記錄格式,它將用添加X-Forwarded-Forheader的值來擴展combined格式,在httpserver中添加以下定義指令:

          log_format??custom??'$remote_addr?-?$remote_user?[$time_local]?"$request"?'
          ????????????????????'$status?$body_bytes_sent?"$http_referer"?'
          ????????????????????'"$http_user_agent"?"$http_x_forwarded_for"';

          要使用新日志格式,請在日志文件后指定其名稱,如下所示:

          access_log??/var/log/nginx/access.log?custom;

          雖然訪問日志提供了非常有用的信息。但它會占用磁盤空間,并可能影響服務器性能。如果服務器資源不足,并且網站繁忙,則可能要禁用訪問日志。為此,請將access_log偽指令的值設置為off。理論上你不會出現(xiàn)這種情況,Nginx會自動刪除前期的日志文件:

          access_log off;

          配置錯誤日志

          Nginx將應用程序和常規(guī)服務器錯誤的消息寫入錯誤日志文件。如果你在Web應用程序中遇到錯誤,則錯誤日志是你開始進行排查問題的第一個位置。
          error_log指令啟用并設置錯誤日志的位置和嚴重性級別。它采用以下格式,可以在httpserverlocation上下文中進行設置:
          error_log?log_file?log_level
          log_level參數(shù)設置日志記錄級別。以下是按嚴重性從低到高列出的級別:
          • debug-調試消息。
          • info?-信息性消息。
          • notice?-公告。
          • warn?- 警告。
          • error?-處理請求時出錯。
          • crit?-關鍵問題。需要立即采取行動。
          • alert?-警報。必須立即采取行動。
          • emerg?- 緊急情況。系統(tǒng)處于無法使用的狀態(tài)。
          每個日志級別包括更高級別。例如,如果你將日志級別設置為warn,則Nginx還將記錄errorcritalertemerg消息。未指定log_level參數(shù)時,默認為error
          默認情況下,error_log指令在主nginx.conf文件內的http指令上下文中定義:
          http?{
          ??...
          ??error_log??/var/log/nginx/error.log;
          ??...
          }
          /etc/nginx/nginx.conf
          與訪問日志相同,建議為每個服務器設置一個單獨的錯誤日志文件,該文件將覆蓋更高級別的設置如http指令上下文。
          例如,要將domain.com的錯誤日志設置為warn,你可以使用:
          http?{
          ??...
          ??error_log??/var/log/nginx/error.log;
          ??...

          ??server?{
          ????server_name?domain.com
          ????error_log??/var/log/nginx/domain.error.log?warn;
          ????...
          ??}
          }
          無論何時修改配置文件,都必須重新加載Nginx服務,以使更改生效。

          日志文件的位置

          在大多數(shù)Linux發(fā)行版中,例如Ubuntu ,CentOS和Debian。默認情況下,訪問和錯誤日志位于/var/log/nginx目錄中。

          讀取和理解Nginx日志文件

          你可以使用catlessgrepcut?,awk等命令打開和解析nginx日志文件。以下是使用默認的Nginx日志格式的訪問日志文件的記錄:
          192.168.33.1?-?-?[15/Oct/2019:19:41:46?+0000]?"GET?/?HTTP/1"?200?396?"-"?"Mozilla/0?(X11;?Linux?x86_64)?AppleWebKit/536?(KHTML,?like?Gecko)?Chrome/38120?Safari/536"
          讓我們細分Nginx日志文件記錄的每個字段意味著什么:
          • $remote_addr-192.168.33.1-發(fā)出請求的客戶端的IP地址。
          • $remote_user?---HTTP身份驗證用戶。未設置用戶名時,此字段顯示-
          • [$time_local]-[15/Oct/2019:19:41:46 +0000]
          本地服務器時間。
          • "$request"?-"GET / HTTP/1.1"-請求類型,路徑和協(xié)議。
          • $status?-200-服務器響應代碼。
          • $body_bytes_sent?-396-服務器響應的大小(以字節(jié)為單位)。
          • "$http_referer"?-"-"-引薦網址。
          • "$http_user_agent"?-Mozilla/5.0 ...-客戶端的用戶代理(網絡瀏覽器)。
          使用tail命令實時觀看日志文件記錄:
          tail -f access.log




          本公眾號全部博文已整理成一個目錄,請在公眾號里回復「m」獲取!

          推薦閱讀:

          24 個常見的 Docker 疑難雜癥處理技巧

          在央企當程序員是一種怎樣的體驗?

          Linux 進程編程入門


          5T技術資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機,樹莓派,等等。在公眾號內回復「1024」,即可免費獲取!


          瀏覽 43
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  我看亚洲逼 | 性欧美视频 | 无码操B| 黄色电影网站在线观看中文字幕 | 成人毛片18女人毛片软件下载 |