gpt4 book ai didi

Nginx设置日志打印post请求参数的方法

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Nginx设置日志打印post请求参数的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

【前言】 。

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

【Nginx设置打印post请求参数】 。

           1、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;

           2、设置前后的效果对比 。

                  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请求参数的方法

                  4、解决乱码 。

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

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

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

Nginx设置日志打印post请求参数的方法

           3、看nginx日志必要性 。

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

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

【总结】 。

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

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

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

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

最后此篇关于Nginx设置日志打印post请求参数的方法的文章就讲到这里了,如果你想了解更多关于Nginx设置日志打印post请求参数的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com