小知识:Nginx设置日志打印post请求参数的方法

【前言】

        我们项目的短信功能是接第三方,原来对接第三方给我们回执确认请求是get请求我们在排查问题的时候可以通过nginx的日志拿到对方给我们请求的参数;最近我们换了另外一家第三方,新的第三方给我们的确认请求是post,遇到问题排查,发现nginx没有打印具体参数,于是查阅一些资料和运维一起做了实验和线上调整,调整后我们可以拿到请求参数,更方便我们排查问题;

Nginx设置打印post请求参数】

           一、Nginx配置文件(nginx.conf)设置打印post请求参数:在http模块的log_format中增加 “dm”:$request_body 防止中文乱码,增加  escape=json

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;

           二、设置前后的效果对比

                  1、发送请求的json格式

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
“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、设置前post请求,nginx打印的结果,很显然没有将参数打印出来

%小知识:Nginx设置日志打印post请求参数的方法-猿站网-插图

                  3、设置后post请求,nginx打印参数,发现参数虽然打印出来但是有乱码情况

%小知识:Nginx设置日志打印post请求参数的方法-1猿站网-插图

                  4、解决乱码

                      (1)需要在log_format main后加 escape=json

                      (2)nginx的版本需要是1.15.1及以上

                      (3)满足以上最终打印出的结果

%小知识:Nginx设置日志打印post请求参数的方法-2猿站网-插图

           三、看nginx日志必要性

                  1、更加全面:它可以记录访问者的ip浏览器以及请求参数等信息比java的请求日志更加全面;

                  2、请求大时,java程序处理不过来,这时java日志没有多余访问请求,而nginx中有,有利于排查问题,优化系统性能。

【总结】

        1、通过日志可以快速定位问题;

        2、排查问题时考虑要全面,从多过维度去思考。

到此这篇关于Nginx设置日志打印post请求参数的方法的文章就介绍到这了,更多相关Nginx 日志打印post请求参数内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/zhanghan18333611647/article/details/81274967

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Linux输入输出重定向详细使用说明

2023-3-27 3:10:21

建站知识

小知识:Linux 性能优化的全景指南,可能都在这里了

2023-3-27 3:18:32

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索