中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nginx日志自定義記錄以及啟用日志緩沖區詳解

發布時間:2020-09-04 16:11:28 來源:腳本之家 閱讀:311 作者:he_xd 欄目:服務器

前言

如果想統計網站的訪問來源信息,可以用 php 獲取信息,記錄到數據庫的形式,也可以直接使用 nginx 提供的訪問日志,來記錄網站的訪問詳情,管理員可以通過分析 nginx 的訪問日志,來分析用戶的訪問來源,訪問行為詳情,網站頁面訪問熱度等。此外,nginx 自身也有錯誤日志,方便運維人員調試 nginx。對于記錄日志的行為,如果每次進行磁盤操作,將會較多的耗費資源,基于這個情況可以開啟 nginx 日志緩沖區,緩沖區滿或者定時寫入的時間到了,再一次寫入日志。

訪問日志

nginx 在處理請求后立即在訪問日志中寫入有關客戶端請求的信息。默認情況下,訪問日志位 logs/access.log 中,信息以預定義的組合格式寫入日志。

想要精確記錄訪問信息,就需要自定義一個更加完整的訪問日志格式,如下所示:

http {
  log_format geoproxy
  '[$time_local] $remote_addr '
  '$realip_remote_addr $remote_user '
  '$request_method $server_protocol '
  '$scheme $server_name $uri $status '
  '$request_time $body_bytes_sent '
  '$geoip_city_country_code3 $geoip_region '
  '"$geoip_city" $http_x_forwarded_for '
  '$upstream_status $upstream_response_time '
  '"$http_referer" "$http_user_agent"';
  ...
}

這個日志配置被命名為 geoproxy,它使用許多 nginx 變量來演示 nginx 日志記錄功能。詳細講解配置選項中各個變量的具體含義:

當用戶發起請求時,會記錄服務器時間 $time_local , $remote_user 值為通過基本授權的用戶名稱;

用于 nginx 處理 geoip_proxy 和 realip_header 指令的打開連接的 IP 地址和客戶端 IP 地址;

之后記錄 HTTP 請求方法 $request_method 、協議 $server_protocol 和 HTTP 方法 $scheme:http 或 https ;

當然還有服務器名稱 $server_name 、請求的 URI 和響應狀態碼;

除基本信息外,還有一些統計的結果數據:包括請求處理的毫秒級時間 $request_time 、服務器響應的數據塊大小 $body_bytes_sent ;

此外,客戶端所在國家 $geoip_city_country_code3 、地區 $geoip_region 和城市信息 $geoip_city 也被記錄在內;

變量 $http_x_forwarded_for 用于記錄由其它代理服務器發起的請求的 X-Forwarded-For 頭消息;

upstream 模塊中一些數據也被記錄到日志里:被代理服務器的響應狀態碼 $upstream_status 、建立鏈接和從上游服務器接收響應主體最后一個字節的時間 $upstream_response_time 、 建立和上游服務器的鏈接時間 $upstream_connect_time 、建立鏈接和從上游響應頭的第一個字節的時間 $upstream_header_time 。

請求來源 $http_referer 和用戶代理 $http_user_agent 也可以被記錄在日志里;

nginx 的日志記錄功能非常強大和靈活的,需要注意的是: 用于定義日志格式的 log_format 指令僅適用于 http 塊級指令內,所有時間值均以毫秒為單位,以毫秒分辨率進行測量。 。

這個格式的日志配置將產生如下類型的日志:

[25/Feb/2019:16:20:42 +0000] 10.0.1.16 192.168.0.122 Derek
GET HTTP/1.1 http www.example.com / 200 0.001 370 USA MI
"Ann Arbor" - 200 0.001 "-" "curl/7.47.0"

如果需要使用這個日志配置,需要結合使用 access_log 指令, access_log 指令接收一個日志目錄和使用的配置名作為參數:

server {
  access_log /var/log/nginx/access.log geoproxy;
  ...
}

access_log 能在多個上下文使用,每個上下文中可以定義各自的日志目錄和日志記錄格式。

結論:nginx 中的日志模塊允許為不同的場景配置日志格式,以便查看不同的日志文件。

在實際運用中,為不同上下文配置不同的日志會非常有用,記錄的日志內容可以簡單的信息,也可以詳細記錄所有必要信息。不僅如此,日志內容除了支持文本

也能記錄 json 格式和 xml 格式數據。實際上 nginx 日志有助于您了解服務器流量、客戶端使用情況和客戶端來源等信息。此外,訪問日志還可以幫助您定位與上游服務器或特定 uri 相關的響應和問題;對于測試來講,訪問日志同樣有用,它可以用于分析流量情況,模擬真實的用戶交互場景。日志在故障排除、調試、應用分析及業務調整中作用是不可或缺的。

錯誤日志

為了精確定位 nginx 的錯誤日志,使用自帶的 error_log 指令定義錯誤日志目錄及記錄錯誤日志的等級,配置如下:

error_log /var/log/nginx/error.log warn;

error_log 指令配置時需要一個必選的日志目錄和一個可選的錯誤等級選項。

除 if 指令外, error_log 指令能在所有的上下文中使用。錯誤日志等級包括:

debug、info、notice、warn、error、crit、alert 和 emerg。給出的日志

等級順序就是記錄最小到最嚴謹的日志等級順序。需要注意的是 debug 日志

需要在編譯 nginx 服務器時,帶上 --with-debug 標識才能使用。

當服務器配置出錯時,首先需要查看錯誤日志以定位問題。錯誤日志

也是定位應用服務器(如 FastCGI 服務)的利器。通過錯誤日志,我們可以調試 worker 進程連接錯誤、內存分配、客戶端 IP 和 應用服務器等問題。 錯誤日志格式不支持自定義日志格式 ;但他同樣記錄當前時間、日志等級和具體信息等數據。

注意:錯誤日志的默認設置適用于全局。要覆蓋它,請將 error_log 指令放在 main (頂級)配置上下文中。 error_log 在開源 NGINX 1.5.2 版中添加了在同一配置級別指定多個指令的功能。

通過 syslog 將日志發送到統一服務器

既然不再需要將日志寫到磁盤的某個目錄,而是發送到統一的日志服務器,則將原有的目錄部分替換為服務器 ip 即可,配置如下:

error_log syslog:server=10.0.1.42 debug;
access_log syslog:server=10.0.1.42,tag=nginx,severity=info geoproxy;

#error_log server=unix:/var/log/nginx.sock debug;
#access_log syslog:server=[2001:db8::1]:1234,facility=local7,tag=nginx,severity=info;

error_log 和 access_log 指令的 syslog 參數緊跟冒號 : 和一些參數選項。包括:必選的 server 標記表示需要連接的 IP、DNS 名稱或 UNIX 套接字;

可以使用如上注釋的高端玩。

可選參數有 facility 、 severity 、 tag :

server 參數接收帶端口的 IP 地址或 DNS 名稱;默認是 UDP 514 端口。

facility 參數設置 syslog 的類型 facility ,值是 syslog RFC 標準定義的 23 個值中一個,默認值為 local7 。其他可能的值是: auth , authpriv , daemon , cron , ftp , lpr , kern , mail , news , syslog , user , uucp , local0 ... local7

tag 參數表示日志文件中顯示時候的標題,默認值是 nginx 。

severity 設置消息嚴重程度,默認是 info 級別日志。

日志緩沖區

當系統處于負載狀態時,啟用日志緩沖區以降低 nginx worker 進程阻塞。大量的磁盤讀寫和 cpu 資源使用對于服務器資源也是一種巨大消耗。將日志數據緩沖到內存中可能是很小的一個優化手段, buffer 參數意義是緩沖區的大小,功能是當緩沖區已經寫滿時,日志會被寫入文件中; flush 參數意義是緩沖區內日志在緩沖區內存中保存的最長時間,功能即當緩存中的日志超過最大緩存時間,也會被寫入到文件中, 不足的地方即寫入到日志文件的日志有些許延遲,即時調試中應當關閉日志緩沖。 。配置如下:

http {
  access_log /var/log/nginx/access.log main buffer=32k flush=1m;
}

參考鏈接:

  1. nginx cook book
  2. nginx 配置日志

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大厂| 伊金霍洛旗| 女性| 安远县| 洞口县| 利津县| 义乌市| 乌海市| 新民市| 文安县| 镇平县| 开原市| 师宗县| 荣成市| 尼勒克县| 饶阳县| 剑河县| 新巴尔虎右旗| 海城市| 南丰县| 白河县| 鄂尔多斯市| 綦江县| 陕西省| 彩票| 嘉兴市| 石首市| 镇雄县| 丹寨县| 勐海县| 岑溪市| 巫山县| 通州市| 赤峰市| 南郑县| 南漳县| 东山县| 万全县| 古浪县| 泌阳县| 新和县|