Nginx設(shè)置日志打印post請求參數(shù)的方法
【前言】
我們項(xiàng)目的短信功能是接第三方,原來對接第三方給我們回執(zhí)確認(rèn)請求是get請求我們在排查問題的時(shí)候可以通過nginx的日志拿到對方給我們請求的參數(shù);最近我們換了另外一家第三方,新的第三方給我們的確認(rèn)請求是post,遇到問題排查,發(fā)現(xiàn)nginx沒有打印具體參數(shù),于是查閱一些資料和運(yùn)維一起做了實(shí)驗(yàn)和線上調(diào)整,調(diào)整后我們可以拿到請求參數(shù),更方便我們排查問題;
【Nginx設(shè)置打印post請求參數(shù)】
一、Nginx配置文件(nginx.conf)設(shè)置打印post請求參數(shù):在http模塊的log_format中增加 "dm":$request_body 防止中文亂碼,增加 escape=json
log_format main escape=json '{ "@timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr",'
'"costime": "$request_time",'
'"realtime": "$upstream_response_time",'
'"status": $status,'
'"x_forwarded": "$http_x_forwarded_for",'
'"referer": "$http_referer",'
'"request": "$request",'
'"upstr_addr": "$upstream_addr",'
'"bytes":$body_bytes_sent,'
'"dm":$request_body,'
'"agent": "$http_user_agent" }';
access_log /var/log/nginx/access.log main;
二、設(shè)置前后的效果對比
1、發(fā)送請求的json格式
{
"results":[
{
"price":{
"pricePerMessage":0.01,
"currency":"aaa"
},
"messageId":"ff4804ef-6ab6-4abd-984d-ab3b1387e852",
"to":"385981178",
"sentAt":"2015-02-12T09:58:20.323+0100",
"doneAt":"2015-02-12T09:58:20.337+0100",
"smsCount":1,
"status":{
"id":5,
"groupId":3,
"groupName":"DELIVERED",
"name":"DELIVERED_TO_HANDSET",
"description":"Message delivered to handset"
},
"error":{
"groupId":0,
"groupName":"OK",
"id":0,
"name":"NO_ERROR",
"description":"No Error",
"permanent":false
}
}
]
}
2、設(shè)置前post請求,nginx打印的結(jié)果,很顯然沒有將參數(shù)打印出來

3、設(shè)置后post請求,nginx打印參數(shù),發(fā)現(xiàn)參數(shù)雖然打印出來但是有亂碼情況

4、解決亂碼
(1)需要在log_format main后加 escape=json
(2)nginx的版本需要是1.15.1及以上
(3)滿足以上最終打印出的結(jié)果

三、看nginx日志必要性
1、更加全面:它可以記錄訪問者的ip瀏覽器以及請求參數(shù)等信息比java的請求日志更加全面;
2、請求大時(shí),java程序處理不過來,這時(shí)java日志沒有多余訪問請求,而nginx中有,有利于排查問題,優(yōu)化系統(tǒng)性能。
【總結(jié)】
1、通過日志可以快速定位問題;
2、排查問題時(shí)考慮要全面,從多過維度去思考。
到此這篇關(guān)于Nginx設(shè)置日志打印post請求參數(shù)的方法的文章就介紹到這了,更多相關(guān)Nginx 日志打印post請求參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot前端后端分離之Nginx服務(wù)器下載安裝過程
Nginx是一款輕量級的Web服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,這篇文章主要介紹了SpringBoot前端后端分離之Nginx服務(wù)器,需要的朋友可以參考下2022-08-08
為什么我推薦Nginx作為后端服務(wù)器代理(原因解析)
這篇文章主要介紹了為什么我推薦Nginx作為后端服務(wù)器代理,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Nginx與Tomcat實(shí)現(xiàn)動靜態(tài)分離和負(fù)載均衡
本篇文章主要介紹了Nginx與Tomcat實(shí)現(xiàn)動靜態(tài)分離和負(fù)載均衡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-10-10
在Linux中查看Apache或Nginx服務(wù)狀態(tài)的詳細(xì)步驟
在Linux中,查看Apache或Nginx服務(wù)的狀態(tài)通常涉及到使用系統(tǒng)管理工具或特定于這些Web服務(wù)器的命令,以下是如何查看Apache和Nginx服務(wù)狀態(tài)的詳細(xì)步驟,需要的朋友可以參考下2024-03-03
服務(wù)器重啟后寶塔界面打開顯示404 nginx的解決方法
在阿里云服務(wù)器搭建寶塔界面,服務(wù)器重啟之后打開寶塔顯示404 not found nginx,本文給大家介紹了服務(wù)器重啟后寶塔界面打開顯示404 nginx的解決方法,需要的朋友可以參考下2024-02-02
通過Nginx定義Header頭信息的實(shí)現(xiàn)步驟
本文主要介紹了通過Nginx定義Header頭信息的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
Keepalived+Nginx+Tomcat 實(shí)現(xiàn)高可用Web集群的示例代碼
這篇文章主要介紹了Keepalived+Nginx+Tomcat 實(shí)現(xiàn)高可用Web集群的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

