Nginx日志格式配置的實現(xiàn)
Nginx日志格式配置
Nginx日志一般有main格式(默認)和json格式兩種
對比總結
特性 | 默認文本格式 | JSON 格式 |
---|---|---|
性能 | 高性能,占用資源低 | 解析耗時,CPU 占用相對較高 |
磁盤占用 | 日志簡短,占用小 | 每個字段都帶有名稱,占用較大 |
日志分析 | 需要手動解析,較為復雜 | 結構化數(shù)據(jù),分析工具集成方便 |
可讀性 | 人眼查看方便 | 不直觀,主要靠日志系統(tǒng)查看 |
擴展性 | 不方便添加新字段 | 靈活添加新字段 |
集成性 | 兼容傳統(tǒng)日志工具 | 適合與 ELK、EFK 進行日志對接 |
?? 最佳實踐
- 性能優(yōu)先: 如果服務器性能不足,優(yōu)先使用文本格式。
- 日志分析優(yōu)先: 如果要進行集中化日志分析(如 ELK),優(yōu)先使用JSON 格式。
- 日志分級: 錯誤日志使用文本格式,訪問日志使用 JSON 格式,這樣既能高效記錄錯誤,又能對業(yè)務數(shù)據(jù)進行分析。
- 日志切割與歸檔: 及時進行日志切割和清理,避免磁盤爆滿。
?? 總結
- 默認文本格式: 高性能,低資源消耗,適合輕量級或性能要求高的生產(chǎn)環(huán)境。
- JSON 格式: 結構化日志,便于分析和監(jiān)控,適合現(xiàn)代化運維和日志管理需求。
一、main 日志變量
1. 請求相關變量
變量名 | 含義 | 示例值 |
---|---|---|
$remote_addr | 客戶端的 IP 地址 | 192.168.1.1 |
$remote_user | 客戶端的認證用戶名 | admin |
$request | 請求的完整字符串(方法 + URI + 協(xié)議) | GET /index.html HTTP/1.1 |
$request_method | 請求的方法 | GET, POST |
$request_uri | 原始的請求 URI(包括參數(shù)) | /index.html?user=123 |
$uri | 請求的 URI,不包括查詢參數(shù) | /index.html |
$args | 請求的查詢參數(shù)字符串 | user=123&name=abc |
$query_string | 與 $args 等效,查詢字符串 | user=123&name=abc |
$status | 響應的 HTTP 狀態(tài)碼 | 200, 404 |
$body_bytes_sent | 響應體大?。ㄗ止?jié)數(shù)) | 2048 |
$http_referer | 引薦頁面 URL | http://example.com/ |
$http_user_agent | 客戶端的瀏覽器信息 | Mozilla/5.0 (Windows NT) |
2. 時間相關變量
變量名 | 含義 | 示例值 |
---|---|---|
$time_local | 本地時間戳 | 19/Mar/2025:04:03:51 +0800 |
$time_iso8601 | ISO 8601 格式的時間戳 | 2025-03-19T04:03:51+08:00 |
$msec | 精確到毫秒的 Unix 時間戳 | 1614768000.123 |
3. 客戶端相關變量
變量名 | 含義 | 示例值 |
---|---|---|
$remote_addr | 客戶端的 IP 地址 | 192.168.1.1 |
$remote_port | 客戶端的端口號 | 52345 |
$http_x_forwarded_for | 客戶端的原始 IP 地址,通常用于代理鏈路中 | 192.168.1.1 |
$http_user_agent | 客戶端的 User-Agent 信息 | Mozilla/5.0 (Windows NT) |
$http_referer | 請求的來源 URL(如果有的話) | http://example.com/ |
4. 上游服務器相關變量
變量名 | 含義 | 示例值 |
---|---|---|
$upstream_addr | 上游服務器的地址(包括端口) | 127.0.0.1:8080 |
$upstream_status | 上游服務器響應的狀態(tài)碼 | 200, 502 |
$upstream_response_time | 上游服務器的響應時間(秒) | 0.125 |
$upstream_connect_time | 與上游服務器建立連接的時間 | 0.050 |
5. 請求處理相關變量
變量名 | 含義 | 示例值 |
---|---|---|
$request_time | 處理請求所花費的總時間(秒) | 0.123 |
$response_time | 響應返回的總時間(秒) | 0.098 |
$upstream_response_time | 從上游服務器接收到響應的時間(秒) | 0.125 |
$pipe | 是否通過管道連接處理請求,p 表示是,. 表示不是 | p |
6. Nginx 內部變量
變量名 | 含義 | 示例值 |
---|---|---|
$hostname | Nginx 主機名 | nginx-server |
$server_name | 當前處理請求的服務器名稱 | www.example.com |
$server_addr | 當前處理請求的服務器 IP 地址 | 192.168.1.1 |
$nginx_version | 當前 Nginx 的版本號 | 1.21.3 |
示例配置:Nginx 日志格式
log_format main '$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 main
#輸出結果
192.168.200.1 - - [19/Mar/2025:03:26:35 -0400] "GET /prod-api/captchaImage HTTP/1.1" 200 4137 "http://192.168.200.14/login?redirect=%2Findex" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0" "-"
192.168.200.1 - - [19/Mar/2025:03:26:40 -0400] "POST /prod-api/login HTTP/1.1" 200 239 "http://192.168.200.14/login?redirect=%2Findex" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0" "-"
字段含義:
- time:
- 日志時間戳,采用 ISO 8601 格式。
"2025-03-19T04:51:55-04:00"
:表示 2025 年 3 月 19 日,04:51:55(-04:00 時區(qū))。
- 日志時間戳,采用 ISO 8601 格式。
- request_time:
- 請求總耗時,單位是秒。
"0.000"
:表示從接收到請求到返回響應的時間為 0 秒,響應極快。
- 請求總耗時,單位是秒。
- upstream_response_time:
- 上游服務器(如 Tomcat)響應時間,單位是秒。
"-"
:表示當前請求沒有經(jīng)過上游服務器(如靜態(tài)資源請求)。
- 上游服務器(如 Tomcat)響應時間,單位是秒。
- remote_addr:
- 客戶端 IP 地址。
"192.168.200.1"
:請求是從該 IP 地址發(fā)出的。
- 客戶端 IP 地址。
- remote_user:
- 遠程用戶的身份認證信息。
"-"
:表示未進行身份認證(或不涉及認證)。
- 遠程用戶的身份認證信息。
- request:
- 請求行,包含請求方法、資源路徑和協(xié)議版本。
"GET /static/js/chunk-2d0bce05.7b94b559.js HTTP/1.1"
:表示發(fā)起了 GET 請求,訪問了指定的靜態(tài)資源文件。
- 請求行,包含請求方法、資源路徑和協(xié)議版本。
- status:
- 響應狀態(tài)碼,表示請求處理結果。
"200"
:請求成功。
- 響應狀態(tài)碼,表示請求處理結果。
- body_bytes_sent:
- 發(fā)送給客戶端的響應體字節(jié)數(shù)。
"10029"
:表示響應體大小為 10029 字節(jié)。
- 發(fā)送給客戶端的響應體字節(jié)數(shù)。
- http_referer:
- 請求來源的 URL,表示請求是從哪個頁面發(fā)起的。
"http://192.168.200.14/monitor/druid"
:表示從監(jiān)控頁面發(fā)起的請求。
- 請求來源的 URL,表示請求是從哪個頁面發(fā)起的。
- http_user_agent:
- 客戶端的用戶代理信息,通常包含瀏覽器和操作系統(tǒng)信息。
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0"
- 客戶端的用戶代理信息,通常包含瀏覽器和操作系統(tǒng)信息。
- http_x_forwarded_for:
- 用于記錄客戶端真實 IP 地址,通常用于反向代理或負載均衡場景。
"-"
:表示沒有經(jīng)過代理或沒有攜帶該頭信息。
- 用于記錄客戶端真實 IP 地址,通常用于反向代理或負載均衡場景。
二、Json常用變量
1.請求相關變量
變量名 | 含義 | 示例值 |
---|---|---|
$request | 請求的完整字符串(方法+URI+協(xié)議) | GET /index.html HTTP/1.1 |
$request_method | 請求方法 | GET, POST, PUT, DELETE |
$request_uri | 原始請求的 URI(包含參數(shù)) | /index.html?user=123 |
$uri | 請求的 URI(不含參數(shù)) | /index.html |
$args | 請求的參數(shù)字符串 | user=123&name=abc |
$query_string | 與 $args 等效 | user=123&name=abc |
$status | 響應狀態(tài)碼 | 200, 404, 500 |
$protocol | 請求協(xié)議 | HTTP/1.1, HTTP/2.0 |
$host | 請求主機名 | www.example.com |
$server_name | 服務器名稱 | example.com |
$server_port | 服務器端口 | 80, 443 |
2.時間和日期相關變量
變量名 | 含義 | 示例值 |
---|---|---|
$time_iso8601 | ISO 8601 格式的時間戳 | 2025-03-19T04:03:51+08:00 |
$time_local | 本地時間戳 | 19/Mar/2025:04:03:51 +0800 |
$msec | 精確到毫秒的時間戳(Unix 時間戳) | 1614768000.123 |
3.客戶端和用戶相關變量
變量名 | 含義 | 示例值 |
---|---|---|
$remote_addr | 客戶端 IP 地址 | 192.168.1.1 |
$remote_port | 客戶端端口 | 52345 |
$remote_user | 已經(jīng)認證的用戶名 | admin |
$http_user_agent | 用戶代理字符串 | Mozilla/5.0 (Windows NT 10.0...) |
$http_referer | 引薦頁面 | http://example.com/page.html |
$http_x_forwarded_for | 代理服務器轉發(fā)的原始客戶端 IP 地址 | 192.168.1.1, 172.16.0.1 |
4.上游和代理相關變量
變量名 | 含義 | 示例值 |
---|---|---|
$upstream_addr | 上游服務器地址(IP:端口) | 127.0.0.1:8080 |
$upstream_status | 上游服務器返回的狀態(tài)碼 | 200, 502 |
$upstream_response_time | 上游服務器響應時間(秒) | 0.125 |
$upstream_connect_time | 連接上游服務器所花費的時間(秒) | 0.050 |
$upstream_header_time | 上游服務器響應頭時間(秒) | 0.075 |
5.請求處理和性能相關變量
變量名 | 含義 | 示例值 |
---|---|---|
$request_time | 請求從接收到響應完成的總時間(秒) | 0.245 |
$body_bytes_sent | 發(fā)送給客戶端的響應字節(jié)數(shù)(不含響應頭) | 1024 |
$bytes_sent | 發(fā)送的總字節(jié)數(shù)(包含響應頭) | 2048 |
$connection | 連接的序列號 | 12345 |
$connection_requests | 當前連接上處理的請求數(shù) | 5 |
6.系統(tǒng)和環(huán)境變量
變量名 | 含義 | 示例值 |
---|---|---|
$pid | 處理請求的工作進程 ID | 1234 |
$pipe | 表示請求是否通過管道傳輸 | p(管道),.(直接連接) |
示例:JSON 日志格式配置
log_format json '{"time":"$time_iso8601",' '"request_time":$request_time,' '"upstream_response_time":"$upstream_response_time",' '"remote_addr":"$remote_addr",' '"remote_user":"$remote_user",' '"request":"$request",' '"status":$status,' '"body_bytes_sent":$body_bytes_sent,' '"http_referer":"$http_referer",' '"http_user_agent":"$http_user_agent",' '"http_x_forwarded_for":"$http_x_forwarded_for"}'; access_log /var/log/nginx/access.log json;
#輸出結果
{"time":"2025-03-19T04:51:55-04:00","request_time":0.000,"upstream_response_time":"-","remote_addr":"192.168.200.1","remote_user":"-","request":"GET /static/js/chunk-2d0bce05.7b94b559.js HTTP/1.1","status":200,"body_bytes_sent":10029,"http_referer":"http://192.168.200.14/monitor/druid","http_user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0","http_x_forwarded_for":"-"}
{"time":"2025-03-19T04:51:56-04:00","request_time":0.010,"upstream_response_time":"0.009","remote_addr":"192.168.200.1","remote_user":"-","request":"GET /prod-api/monitor/server HTTP/1.1","status":200,"body_bytes_sent":93,"http_referer":"http://192.168.200.14/monitor/server","http_user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0","http_x_forwarded_for":"-"}
字段含義:
time:
- 日志時間戳,采用 ISO 8601 格式。
"2025-03-19T04:51:55-04:00"
:表示 2025 年 3 月 19 日,04:51:55(-04:00 時區(qū))。
request_time:
- 請求總耗時,單位是秒。
"0.000"
:表示從接收到請求到返回響應的時間為 0 秒,響應極快。
upstream_response_time:
- 上游服務器(如 Tomcat)響應時間,單位是秒。
"-"
:表示當前請求沒有經(jīng)過上游服務器(如靜態(tài)資源請求)。
remote_addr:
- 客戶端 IP 地址。
"192.168.200.1"
:請求是從該 IP 地址發(fā)出的。
remote_user:
- 遠程用戶的身份認證信息。
"-"
:表示未進行身份認證(或不涉及認證)。
request:
請求行,包含請求方法、資源路徑和協(xié)議版本。
"GET /static/js/chunk-2d0bce05.7b94b559.js HTTP/1.1"
GET
:HTTP 請求方法。/static/js/chunk-2d0bce05.7b94b559.js
:請求的資源路徑。HTTP/1.1
:協(xié)議版本。
status:
- HTTP 響應狀態(tài)碼。
200
:表示請求成功。
body_bytes_sent:
- 響應體的字節(jié)數(shù)。
10029
:表示響應大小為 10029 字節(jié)(約 9.8 KB)。
http_referer:
- 引薦頁面,即從哪個頁面發(fā)起的請求。
"http://192.168.200.14/monitor/druid"
:用戶是從這個頁面發(fā)起的請求。
http_user_agent:
- 客戶端的瀏覽器和操作系統(tǒng)信息。
- 瀏覽器:Chrome 134.0.0.0
- 操作系統(tǒng):Windows 10 x64
http_x_forwarded_for:
- 用于識別通過代理服務器訪問的客戶端的真實 IP。
"-"
:表示沒有經(jīng)過代理,或沒有傳遞該頭信息。
到此這篇關于Nginx日志格式配置的實現(xiàn)的文章就介紹到這了,更多相關Nginx日志配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
在linux中安裝nginx及在樹莓派ubuntu中安裝nginx的方法
在進行軟件安裝時,若遇到報錯,常見的解決方法之一是檢查是否缺失依賴,并嘗試安裝所需的依賴包,記得去掉尖括號,對于nginx服務器,配置文件的位置和管理是關鍵操作之一,通過命令cd進入后,使用sudo nano index.nginx-debian.html命令打開并編輯默認的html文件2024-11-11詳解如何設置Nginx實現(xiàn)內外網(wǎng)端口映射
在 Nginx 中實現(xiàn)內外網(wǎng)端口映射是一種常見的做法,本文詳細介紹如何設置 Nginx 實現(xiàn)內外網(wǎng)端口映射,有需要的小伙伴可以跟隨小編一起學習一下2024-10-10Nginx使用ngx_http_upstream_module實現(xiàn)負載均衡功能示例
本文主要介紹了Nginx使用ngx_http_upstream_module實現(xiàn)負載均衡功能示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08