最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

為什么選擇JSON格式日志?

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

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

配置步驟詳解

1. 安裝Nginx服務(wù)

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

apt -y install nginx

對(duì)于RHEL/CentOS系統(tǒng),請(qǐ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;
    # 重要:注釋或移除默認(rèn)的日志格式
    # access_log /var/log/nginx/access.log;
    ...
}

各字段說(shuō)明

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

3. 配置文件語(yǔ)法檢查

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

nginx -t

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

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. 測(cè)試驗(yàn)證

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

while true; do curl 10.0.0.91; sleep 0.5; done

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

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

您應(yīng)該看到類(lèi)似以下的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以防止日志文件過(guò)大

vim /etc/logrotate.d/nginx
  • 敏感信息過(guò)濾:避免記錄敏感信息如密碼、信用卡號(hào)等

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

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

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

擴(kuò)展配置

添加更多字段

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

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

條件日志記錄

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

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;
    ...
}

常見(jiàn)問(wèn)題排查

  • 日志文件無(wú)寫(xiě)入

    • 檢查Nginx進(jìn)程用戶(hù)對(duì)日志目錄的權(quán)限
    • 確認(rèn)沒(méi)有其他配置覆蓋了access_log指令
  • JSON格式錯(cuò)誤

    • 確保所有字符串值都有雙引號(hào)包圍
    • 確保沒(méi)有多余的逗號(hào)
  • 性能下降

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

結(jié)論

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

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

相關(guān)文章

  • nginx反向代理二級(jí)域名綁定方法及注意事項(xiàng)

    nginx反向代理二級(jí)域名綁定方法及注意事項(xiàng)

    本文介紹了利用nginx實(shí)現(xiàn)多域名和多站點(diǎn)的綁定的方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-04-04
  • nginx.conf配置文件結(jié)構(gòu)小結(jié)

    nginx.conf配置文件結(jié)構(gòu)小結(jié)

    本文主要介紹了nginx.conf配置文件結(jié)構(gòu)小結(jié),nginx.conf主要由events、http、server、location、upstream等塊配置項(xiàng)和一些行配置項(xiàng)組成,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Nginx之Http模塊系列之a(chǎn)utoindex模塊的具體使用

    Nginx之Http模塊系列之a(chǎn)utoindex模塊的具體使用

    這篇文章主要介紹了Nginx之Http模塊系列之a(chǎn)utoindex模塊的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Nginx服務(wù)器基本的模塊配置和使用全攻略

    Nginx服務(wù)器基本的模塊配置和使用全攻略

    這篇文章主要介紹了Nginx服務(wù)器基本的模塊配置和使用全攻略,從Nginx的安裝開(kāi)始細(xì)致入微地講解各個(gè)常用模塊的部署和參數(shù)使用,需要的朋友可以參考下
    2016-04-04
  • Nginx實(shí)現(xiàn)http自動(dòng)跳轉(zhuǎn)到https

    Nginx實(shí)現(xiàn)http自動(dòng)跳轉(zhuǎn)到https

    本文主要介紹了Nginx實(shí)現(xiàn)http自動(dòng)跳轉(zhuǎn)到https,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Nginx會(huì)話(huà)保持的具體實(shí)現(xiàn)

    Nginx會(huì)話(huà)保持的具體實(shí)現(xiàn)

    會(huì)話(huà)保持是指在會(huì)話(huà)持續(xù)或會(huì)話(huà)完成一個(gè)任務(wù)或一個(gè)事務(wù)的時(shí)間段內(nèi),將客戶(hù)端請(qǐng)求引導(dǎo)至同一個(gè)后端Web服務(wù)器或應(yīng)用服務(wù)器,本文主要介紹了Nginx會(huì)話(huà)保持的具體實(shí)現(xiàn),感興趣的可以了解一下
    2024-07-07
  • nginx中g(shù)zip_types匹配content-type的方式

    nginx中g(shù)zip_types匹配content-type的方式

    這篇文章主要介紹了nginx中g(shù)zip_types匹配content-type的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 使用Nginx解決跨域訪(fǎng)問(wèn)問(wèn)題的完整案例

    使用Nginx解決跨域訪(fǎng)問(wèn)問(wèn)題的完整案例

    在現(xiàn)代的Web開(kāi)發(fā)中,跨域訪(fǎng)問(wèn)是一種常見(jiàn)的需求,由于瀏覽器的同源策略,不同域名之間的訪(fǎng)問(wèn)存在一定的限制,本文將介紹如何使用Nginx來(lái)解決跨域訪(fǎng)問(wèn)的問(wèn)題,并通過(guò)一個(gè)完整的實(shí)例來(lái)展示,需要的朋友可以參考下
    2024-03-03
  • nginx配置多個(gè)vue項(xiàng)目

    nginx配置多個(gè)vue項(xiàng)目

    這篇文章主要介紹了nginx配置多個(gè)vue項(xiàng)目的方法以及流程介紹,對(duì)此有需要的朋友參考下。
    2018-04-04
  • Nginx 安裝筆記(含PHP支持、虛擬主機(jī)、反向代理負(fù)載均衡)

    Nginx 安裝筆記(含PHP支持、虛擬主機(jī)、反向代理負(fù)載均衡)

    Nginx安裝簡(jiǎn)記(含PHP支持、虛擬主機(jī)、反向代理負(fù)載均衡) Nginx,據(jù)說(shuō)高性能和穩(wěn)定性比Apache還牛,并發(fā)連接處理能力強(qiáng),低系統(tǒng)資源消耗。目前已有250多萬(wàn)web站點(diǎn)在使用
    2009-10-10

最新評(píng)論

正宁县| 宜章县| 夹江县| 雷州市| 新建县| 兖州市| 深圳市| 台湾省| 南康市| 淮滨县| 镇坪县| 三都| 文昌市| 商河县| 邓州市| 平谷区| 吕梁市| 砚山县| 武夷山市| 巴东县| 江油市| 柳河县| 澎湖县| 景宁| 扎赉特旗| 威宁| 醴陵市| 四子王旗| 姚安县| 嫩江县| 元阳县| 扶余县| 自治县| 阿巴嘎旗| 谷城县| 宜春市| 贵德县| 铅山县| 马关县| 高陵县| 丹凤县|