亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何自定義Nginx JSON日志格式配置

 更新時間:2025年03月27日 09:14:56   作者:Leo-Yide  
Nginx作為最流行的Web服務(wù)器之一,其靈活的日志配置能力允許我們根據(jù)需求定制日志格式,本文將詳細介紹如何配置Nginx以JSON格式記錄訪問日志,這種結(jié)構(gòu)化日志格式特別適合ELK等日志分析系統(tǒng)處理,感興趣的朋友一起看看吧

前言

在現(xiàn)代Web服務(wù)架構(gòu)中,日志記錄是監(jiān)控、調(diào)試和安全審計的重要環(huán)節(jié)。Nginx作為最流行的Web服務(wù)器之一,其靈活的日志配置能力允許我們根據(jù)需求定制日志格式。本文將詳細介紹如何配置Nginx以JSON格式記錄訪問日志,這種結(jié)構(gòu)化日志格式特別適合ELK等日志分析系統(tǒng)處理。

為什么選擇JSON格式日志?

相比傳統(tǒng)的NCSA通用日志格式,JSON格式日志具有以下優(yōu)勢:

  • 結(jié)構(gòu)化數(shù)據(jù):便于日志分析系統(tǒng)(如ELK Stack)解析和處理
  • 字段擴展性:可以輕松添加或刪除字段而不影響現(xiàn)有日志解析
  • 數(shù)據(jù)類型明確:數(shù)值、字符串等數(shù)據(jù)類型可以明確區(qū)分
  • 兼容性好:與大多數(shù)現(xiàn)代日志處理工具和數(shù)據(jù)庫系統(tǒng)兼容

配置步驟詳解

1. 安裝Nginx服務(wù)

在基于Debian/Ubuntu的系統(tǒng)上安裝Nginx:

apt -y install nginx

對于RHEL/CentOS系統(tǒng),請使用:

yum -y install nginx

2. 自定義JSON日志格式

編輯Nginx主配置文件(通常位于/etc/nginx/nginx.conf):

http {
    ...
    log_format oldboyedu_nginx_json '{"@timestamp":"$time_iso8601",'
                                  '"host":"$server_addr",'
                                  '"clientip":"$remote_addr",'
                                  '"SendBytes":$body_bytes_sent,'
                                  '"responsetime":$request_time,'
                                  '"upstreamtime":"$upstream_response_time",'
                                  '"upstreamhost":"$upstream_addr",'
                                  '"http_host":"$host",'
                                  '"uri":"$uri",'
                                  '"domain":"$host",'
                                  '"xff":"$http_x_forwarded_for",'
                                  '"referer":"$http_referer",'
                                  '"tcp_xff":"$proxy_protocol_addr",'
                                  '"http_user_agent":"$http_user_agent",'
                                  '"status":"$status"}';
    access_log  /var/log/nginx/access.log  oldboyedu_nginx_json;
    # 重要:注釋或移除默認的日志格式
    # access_log /var/log/nginx/access.log;
    ...
}

各字段說明

字段名變量描述
@timestamp$time_iso8601ISO8601格式的時間戳
host$server_addr服務(wù)器IP地址
clientip$remote_addr客戶端IP地址
SendBytes$body_bytes_sent發(fā)送給客戶端的字節(jié)數(shù)
responsetime$request_time請求處理總時間
upstreamtime$upstream_response_time后端服務(wù)器響應(yīng)時間
upstreamhost$upstream_addr后端服務(wù)器地址
http_host$host請求的主機頭
uri$uri請求的URI
domain$host請求的域名
xff$http_x_forwarded_forX-Forwarded-For頭信息
referer$http_referer請求來源
tcp_xff$proxy_protocol_addr代理協(xié)議地址
http_user_agent$http_user_agent用戶代理字符串
status$statusHTTP響應(yīng)狀態(tài)碼

3. 配置文件語法檢查

執(zhí)行以下命令檢查Nginx配置是否正確:

nginx -t

如果配置正確,您應(yīng)該看到類似輸出:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

4. 重啟Nginx服務(wù)

應(yīng)用新的配置:

systemctl restart nginx

5. 測試驗證

可以使用簡單的循環(huán)命令測試日志記錄:

while true; do curl 10.0.0.91; sleep 0.5; done

檢查日志文件內(nèi)容:

tail -f /var/log/nginx/access.log

您應(yīng)該看到類似以下的JSON格式日志條目:

{"@timestamp":"2023-05-15T14:30:45+08:00","host":"10.0.0.91","clientip":"10.0.0.1","SendBytes":612,"responsetime":0.002,"upstreamtime":"-","upstreamhost":"-","http_host":"10.0.0.91","uri":"/","domain":"10.0.0.91","xff":"-","referer":"-","tcp_xff":"","http_user_agent":"curl/7.68.0","status":"200"}

生產(chǎn)環(huán)境建議

日志輪轉(zhuǎn):配置logrotate以防止日志文件過大

vim /etc/logrotate.d/nginx
  • 敏感信息過濾:避免記錄敏感信息如密碼、信用卡號等

  • 性能考慮:在高流量環(huán)境中,JSON日志可能會增加磁盤I/O負載

  • 字段優(yōu)化:根據(jù)實際需求調(diào)整字段,只記錄必要信息

  • 日志分割:考慮按虛擬主機或日期分割日志文件

擴展配置

添加更多字段

您可以根據(jù)需要擴展日志格式,例如添加請求方法:

log_format oldboyedu_nginx_json '{"@timestamp":"$time_iso8601",'
                              ...
                              '"method":"$request_method",'
                              ...
                              '"status":"$status"}';

條件日志記錄

對于靜態(tài)資源等不重要的請求,可以跳過日志記錄:

map $uri $is_static {
    default 0;
    ~*\.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg) 1;
}
server {
    ...
    access_log /var/log/nginx/access.log oldboyedu_nginx_json if=$is_static;
    ...
}

常見問題排查

  • 日志文件無寫入

    • 檢查Nginx進程用戶對日志目錄的權(quán)限
    • 確認沒有其他配置覆蓋了access_log指令
  • JSON格式錯誤

    • 確保所有字符串值都有雙引號包圍
    • 確保沒有多余的逗號
  • 性能下降

    • 考慮減少日志字段數(shù)量
    • 評估使用緩沖寫入(access_log ... buffer=32k flush=5m

結(jié)論

通過配置Nginx以JSON格式記錄訪問日志,您可以獲得更加結(jié)構(gòu)化和易于分析的日志數(shù)據(jù)。這種格式特別適合與ELK Stack、Splunk等日志分析系統(tǒng)集成,為您的Web服務(wù)提供更好的可觀測性。根據(jù)您的具體需求,可以靈活調(diào)整日志字段,平衡信息豐富度和系統(tǒng)性能。

到此這篇關(guān)于自定義Nginx JSON日志格式配置指南的文章就介紹到這了,更多相關(guān)Nginx JSON日志格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Nginx實現(xiàn)根據(jù) IP 匹配指定 URL

    使用Nginx實現(xiàn)根據(jù) IP 匹配指定 URL

    最近的一個項目,需要特定的IP訪問某專題頁面的時候跳轉(zhuǎn)到網(wǎng)站首頁,思考了下,直接使用NGINX實現(xiàn),分享給大家。
    2014-09-09
  • 使用 Nginx 部署靜態(tài)頁面的方法

    使用 Nginx 部署靜態(tài)頁面的方法

    本篇文章主要介紹了使用 Nginx 部署靜態(tài)頁面的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • nginx 基本入門教程

    nginx 基本入門教程

    本篇文章主要介紹了詳解nginx 基本入門,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Nginx更換ssl證書不生效的問題解決

    Nginx更換ssl證書不生效的問題解決

    本文主要介紹了Nginx配置中更換SSL證書后,新證書不生效的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-12-12
  • nginx HTTP模塊配置常用指令

    nginx HTTP模塊配置常用指令

    這篇文章主要介紹了nginx HTTP模塊在配置文件中常用的指令,詳解了每個指令的含義、語法和注意事項等,需要的朋友可以參考下
    2014-03-03
  • nginx降權(quán)與匹配php詳細講解

    nginx降權(quán)與匹配php詳細講解

    大部分網(wǎng)站開發(fā)語言都要運行在服務(wù)器,比如主流的nginx、apache等等,下面這篇文章主要給大家介紹了關(guān)于nginx降權(quán)與匹配php的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Nginx 正向代理和反向代理的配置實現(xiàn)

    Nginx 正向代理和反向代理的配置實現(xiàn)

    Nginx通過優(yōu)秀的架構(gòu)設(shè)計和高效的算法實現(xiàn)了高性能和高可靠性,本文主要介紹了Nginx 正向代理和反向代理的配置實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-06-06
  • 在Nginx中攔截特定用戶代理的教程

    在Nginx中攔截特定用戶代理的教程

    這篇文章主要介紹了在Nginx中攔截特定用戶代理的教程,并為這些被攔截的用戶設(shè)置一個黑名單以方便管理,需要的朋友可以參考下
    2015-06-06
  • Nginx服務(wù)器基礎(chǔ)的安全配置與一些安全使用提示

    Nginx服務(wù)器基礎(chǔ)的安全配置與一些安全使用提示

    這篇文章主要介紹了Nginx服務(wù)器基礎(chǔ)的安全配置與一些安全使用提示,文中舉了一些典型的Nginx與PHP的環(huán)境用例,需要的朋友可以參考下
    2016-01-01
  • Nginx 502 bad gateway和Nginx 504 Gateway Time-out錯誤解決方法 錯誤解決辦法

    Nginx 502 bad gateway和Nginx 504 Gateway Time-out錯誤解決方法 錯誤解決辦

    Nginx 502 Bad Gateway的含義是請求的PHP-CGI已經(jīng)執(zhí)行,但是由于某種原因(一般是讀取資源的問題)沒有執(zhí)行完畢而導(dǎo)致PHP-CGI進程終止
    2012-09-09

最新評論